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
:D

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