Um scanner comum de codigo de barras funciona como um teclado via usb. Quando utilizo o scanner no notepad ou word por exemplo, ele não falha. Quando utilizo no java, em jtextfield ou jtextarea, ele retorna bytes errados, sujos, quase sempre diferentes um do outro…
pergunta 1. Tem como uma thread ficar lendo direto o stream disso, como se fosse de um outro tclado? por onde começo?
pergunta 2. Alguem tem ideia do pq isso acontece?
Um scanner comum de codigo de barras funciona como um teclado via usb. Quando utilizo o scanner no notepad ou word por exemplo, ele não falha. Quando utilizo no java, em jtextfield ou jtextarea, ele retorna bytes errados, sujos, quase sempre diferentes um do outro…
pergunta 1. Tem como uma thread ficar lendo direto o stream disso, como se fosse de um outro tclado? por onde começo?
pergunta 2. Alguem tem ideia do pq isso acontece?
valeu ar
cara, isso acontece porque esta com a configuração errada. veja o manual que vem junto e configure o tipo de encoder dele.
zerokelvin
Mas se estivesse errada a configuração ele falharia em qualquer programa, certo? pq ele só falha nos componentes jtextfield, jtextarea, testei no awt.textfield e deu na mesma…
mauricioadl
prq os outros programas leem varios formatos diferentes, os componentes java nao.
X
xandi_m5
off-topic:
Uma duvida, como eu faço para o código/projato “acha” dispositivo? Por meio de plugin, declaração e etc?
Só curiosidade… =D
zerokelvin
xandi_m5:
off-topic:
Uma duvida, como eu faço para o código/projato “acha” dispositivo? Por meio de plugin, declaração e etc?
Só curiosidade… =D
num faz. Ele é reconhecido pelo so como um teclado a parte, por exemplo:
196125
Esse numero acima foi um código de barras que acabei de de ler… então basta colocar o cursor em algum lugar ou capturar a entrada do teclado, como se fosse de digitação.
Confesso que foi mais simples do que eu imaginava…
Bom sobre o problema que tive…
Imprimi as teclas e codigos delas que estavam sendo digitadas, através de um keyEvent, vi que por padrão, o leitor, entre um numero e outro, mandava dois outros digitos, de numeros 18 e 90… e no final imprimia o 10, que é o enter… não sei quais são esses caracteres 18 e 90, mas como talvez nao tenham uma representaçao, ele gerava esse erro. Foi só filtrar que resolvi o erro.