Página 1 de 1
Leitor de código de barras
Enviado: 27 Dez 2012 10:40
por leandrolinauer
Bom dia a todos.
Fiz umas pesquisas mas não encontrei exatamente solução para meu probleminha.
Faço o uso do leitor em read e tbem pelo dbedit(), no read funciona perfeitamente pega a quantidade total sem problemas.
Já no dbedit o sistema fica em aguardo de alguma tecla ser acionada para ver o que vai fazer, tipo assim:
Case lastkey()=13 // foi teclado enter e entra na funcao
Case ......
e por fim tenho um case final para ler o leitor
Case Upper(Chr(LastKey()))$"0123456789" // foi teclado numeros ou o leitor foi acionado
aí aqui dentro não dei conta de fazer, tudo que função que usei, ele só pega os ultimos numeros, menos o primero.
Exemplo: passo o leitor no codigo 7896041912029
o resultado é "896041912029"
Alguem sabe a solução????
Leitor de código de barras
Enviado: 27 Dez 2012 12:59
por sygecom
Post o código, quem sabe olhando agente pode compilar e lhe ajudar a resolver isso...
Leitor de código de barras
Enviado: 27 Dez 2012 15:38
por leandrolinauer
Código: Selecionar todos
Case Upper(Chr(LastKey()))$"0123456789"
//eu entro nesta função ja com a pistola acionada
//existe alguma função no harbour que le o leitor e armazena o conteudo???
@ 19,65 Get yCdBar Pict "@S14!" Color("B+/N") // só pega os ultimos caracteres
Read()
//por exemplo: se pistolar o codigo "7896041912029" vira o retorno somente de "896041912029" se fizer de 0101015 retornara 101015, sempre some o primeiro
Atenciosamente
Leandro

Leitor de código de barras
Enviado: 27 Dez 2012 17:03
por leandrolinauer
Boa tarde.
Bom fiz uma gambiara para funcionar, mas se alguem tiver outra sujestão para fazer direto é melhor.
Abaixo o que fiz para funcionar.
Código: Selecionar todos
ycdbar:=Chr(LastKey()) //pego o primeiro digito que sempre some
xcdbar:=Space(14)
@ 19,65 Get xCdBar Pict "@S13!" Color("B+/N") //pego o restante
Read()
aCdBar:=AllTrim(ycdBar+xCdBar) //agrupo os dois e blz.
@ 19,64 Say aCdBar Pict "@S14!" Color("B+/N")
Atenciosamente
Leandro -:]
Leitor de código de barras
Enviado: 27 Dez 2012 23:53
por sygecom
Tem coisa errada mesmo, seu código está pela metade, está faltando um monte de coisa ai...boa sorte.
Leitor de código de barras
Enviado: 28 Dez 2012 11:25
por jamazevedo
Eu faço assim:
Código: Selecionar todos
cCodigo := SPACE(13)
@ 1,1 SAY "Digite o Codigo:" GET cCodigo PICTURE "@!"
READ
Funciona 100%.
Leitor de código de barras
Enviado: 28 Dez 2012 12:23
por ANDRIL
Isso acontece por que o dbedit() ocasiona um estado de espera para digitação de teclas. Tente conforme abaixo.
Código: Selecionar todos
Case Upper(Chr(LastKey()))$"0123456789"
*--so use isto quando estiver no dbedit, se for um get, nao precisa!
keyboard Chr(LastKey())
@ 19,65 Get yCdBar Pict "@S14!" Color("B+/N") // só pega os ultimos caracteres
Read()
Ate+
Leitor de código de barras
Enviado: 30 Dez 2012 20:02
por lucimauro
O exemplo que o andreu lhe mandou é como eu uso tambem,ou seja
eu envia para o buffer do teclado [keybaord chr(lastkey())]
Leitor de código de barras
Enviado: 03 Jan 2013 16:19
por leandrolinauer
Boa tarde a todos, valeu pela ajuda.
Como eu havia dito acima no inicio, no read ou seja dando GET funciona perfeitamente.
e o exemplo postado é exatamente o trecho todo que uso no DBEDIT apenas o techo de leitura do leitor porque o resto não interressa ao código, são outras funções em que o leitou não afeta.
Eu consegui arrumar, da forma abaixo e esta funcionando mas faço a gambiara para funcionar.
Código: Selecionar todos
Case Upper(CHR(LastKey()))$"0123456789" //codigo de barra com pistola
wRet:=2
************* esta parte abaixo é a gambiara ***********
ycdbar:=Chr(LastKey())
xcdbar:=Space(14)
@ 21,13 Get xCdBar Pict "@S13!" Color("B+/N")
Keyin() // meu read()
aCdBar:=AllTrim(ycdBar+xCdBar)
***************** até aqui a gambiara ***********************
@ 21,14 Say aCdBar Pict "@S14!" Color("B+/N")
CEST0300->(DbSetOrder(3))
If CEST0300->(DbSeek(aCdBar)) //localizo perfeitamente
wMerc:=CEST0300->CODIGO
MyKeyBoard(Chr(22),.T.)
Else
ShowMessage(,,"Código de barra não cadastrado. Favor cadastrar.",3)
MyKeyBoard(" ",.T.)
EndIf
CEST0300->(DbSetOrder(1))
O que eu pensei em fazer para nao fazer gambiara é exatamente encurtar o caminho eliminando de alguma forma alguma parte acima do código.
Igual ao Andril respondeu, apenas pegando o chr(lastkey()) e pronto, mas infelismente pega apenas o primeiro digito.
Mas se de tudo não houver outra forma para usar junto com dbedit, fica assim, sem problemas, esta funfando.
Grato pela ajuda de todos.
-:]
Leitor de código de barras
Enviado: 05 Jan 2013 15:09
por alaminojunior
Olá,
segue trecho de código que uso para o caso citado.
Código: Selecionar todos
Tb4:= tbcolumnnew( vcab, { || " "+subs(predsc,1,40)+" "+marpre(premac)+" "+trans(prevnd,"@E999,999.99")+;
" /"+preemb+" "+tran(preest,"@E9,999.99")+" "})
Tb3:= tbrowseDB(04,01,17,78)
Tb3:headsep:= " "
Tb3:colorspec:= "n/w*,gr+/b,w/w*,w/n,rb/w*"
Tb4:defcolor:= {5}
Tb4:colorblock:= {|tb3| iif(preest < 1 , {3,4},{1,2})}
Tb3:addcolumn(Tb4)
do while .t.
do while !tb3:stabilize()
enddo
grid(Tb3)
tempo:= inkey(3) // aqui ele espera 3 segundos para refrescar, e inkey retorna a tecla que foi pressionada
do case
case tempo = 0
Tb3:RefreshAll()
loop
case tempo = K_DOWN
Tb3:down()
Tb3:RefreshCurrent()
loop
case tempo = K_UP
Tb3:up()
Tb3:RefreshCurrent()
loop
case tempo = K_PGDN
Tb3:PageDown()
Tb3:RefreshAll()
loop
case tempo = K_PGUP
Tb3:PageUp()
Tb3:RefreshAll()
loop
case tempo > 47 .AND. tempo < 58 // de 1 a 9 abre o get
__pesq:= space(13)
keyboard tempo
OrdSetFocus("indpre01")
pesqq:=savescreen(26,18,30,70)
criabox3db(27,18,29,59)
@ 28,19 get __pesq pict "99999999999999" color "w+/b"
set cursor on
read
set cursor off
if lastkey() = 27
restscreen(26,18,30,70,pesqq)
loop
endif
OrdSetFocus("indpre01")
if !dbseek(val(__pesq))
ordsetfocus("indpre05")
if !dbseek(__pesq)
msgexclamation(" N Ã O E N C O N T R A D O "," A T E N Ç Ã O ")
endif
endif
ordsetfocus("indpre01")
restscreen(26,18,30,70,pesqq)
destacar(tb3)
loop
case isalpha(Chr(lastkey())) // se teclar um caracter alfabético ...
ordsetfocus("indpre02")
Tb3:dehilite()
pesquisaA(Upper(Chr(lastkey())))
Destaca()
Tb3:RefreshAll()
Tb3:hilite()
loop
Leitor de código de barras
Enviado: 29 Mai 2015 12:17
por lugab
Amigos, aproveito este tópico devido a similaridade do tema, pra não abrir um outro.
Seguinte: eu nunca usei leitor de Código de barras, mas pretendo usar e preciso, antes, saber o que segue:
Considerem q uso Harbour e Xharbour....
01) O leitor de cod.barras é padrão USB, Serial ou Paralelo ?
02) É necessário instalar algum driver ou fazer alguma adaptação na linguagem clipper para o get + read funcionar ?
Alguém me ajuda ?
Obrigado...
Leitor de código de barras
Enviado: 29 Mai 2015 14:03
por ANDRIL
lugab escreveu:01) O leitor de cod.barras é padrão USB, Serial ou Paralelo ?
Geralmente o leitor é USB, ou vem com adaptador (Y) para conectar na entrada do teclado no PC (desuso).
Os leitores seriais geralmente vem com "DRIVE" próprio para instalá-lo. Após instalado funciona como os demais.
O leitor apenas simula a digitação dos números, caracteres que tem na representação gráfica, ou seja, o que voce faz digitando ele faz lendo.
No seu sistema, em um GET, ao fazer a leitura, ele sera preenchido com o conteúdo, daí em diante voce pega a variavel e segue com seu fluxo normal do sistema.
Alguns leitores, vem com uma tabela de configuração com os códigos de barras que corresponde algumas opções, basta ler com o leitor para obter essa configuração conforme a necessidade. Por exemplo, a configuração de caracter após a leitura da barra, colocar um ENTER, colocar um ESPAÇO etc. Tudo esta neste manual que acompanha o produto.
Ate+
Leitor de código de barras
Enviado: 29 Mai 2015 17:29
por lugab
Ok, Andril, muio obrigado...
Folgo em saber q é tudo automático