Leitor de codigo de barras lê números errado no jTextFiel

Tem um cliente que tem um leitor Multilaser ga126 e somente no jTextField ele lê o conteúdo errado no codigo de barras, exemplo:
Codigo lido no bloco de notas: 7622210661593
codigo lido no jTextField do java: 7626♣1³♦0♣♣9'
Já configurei o leitor de varias formas diferentes, mas nada.
Tem alguma coisa que da fazer no Java pra corrigir esse problema?

Como você está lendo o leitor?

Esse leitor usa o character-encoding UTF-8?
Se for, verifica se teu fonte Java também está em UTF-8.

Meu codigo está em UTF-8. Procurei no manual mas não o tipo de codificação.
O estranho é que uma 5 ou 6 lidas erradas, uma leitura sai com o codigo de barras certo

Como é o código que realiza a leitura?

Apenas crio um jTextField básico e faço a leitura, segue a foto de exemplosalvar%20jtextfiel

Código @Jns_Vieira

Eu ainda não digitei nenhum código, eu apenas arrastei um jTextField para o frame usando a parte gráfica e executei, depois fiz a leitura do codigo de barras mas aparece isso conforme a imagem.
Mas o codigo que cria o jtextfield é este daqui: public javax.swing.JTextField jTextField1; mas acredito que seja irrelevante, pois já tentei criar via codigo, já testei em jtextArea, já testei em jComboBox, em jTable, só que todos leem o codigo do mesmo jeito

Vc precisa saber qual o encoding que o leitor usa para transmitir para o SO, pegar os dados crus na sua aplicação, recodificar para UTF-8 e então jogar dentro do campo de texto. O problema é que vc não pode simplesmente jogar os dados crus dentro de uma string, pois eles serão simplesmente convertidos para UTF-8, perdendo o sentido. Vc precisa lidar com o binário dos dados, provavelmente tendo que lidar com código nativo… Verifica com o fabricante se tem como alterar o encoding que o aparelho codifica… Não sei se vai ter muito sucesso pq essas marcas vagabundas só vendem lixo.

Suponhamos que o leitor seja ASCII, como eu faria essa conversão?

O que você entende por “faço a leitura”?
Você não lê esse código a partir de um InputStream que corresponde ao seu leitor de código de barras?

Esses leitores funcionam basicamente como teclados, simulando a digitação. Não precisa codificar nada na aplicação pra eles funcionarem.

Edit: @Jns_Vieira , confira também como o leitor está configurado, e se a leitura funciona em outro editor (ex: abra o bloco de notas e veja o que é lido). Revise as opções no manual.

Abraço.

1 curtida

Configurou seguindo as instruções do manual?
Qual o modo de saída?
Qual o idioma?

Sim, eu tô ligado, mas eles precisam estar configurados para isso.
Estou achando que talvez o leitor dele esteja configurado com um modo de saída diferente, ou outro idioma, por isso tá gerando um String diferente.

Não. Apenas coloco o cursor no campo, e leio código de barras, não uso nenhum código

“Leio o código de barras” seria pressionar o gatilho do leitor?
Acredito que o modo de saída do teu leitor está configurado errado.

No bloco de notas o leitor funciona normalmente. Somente nas aplicações Java que acontece isso. Já testei em outro PC. Já testei em uma aplicação do do governo que é feito em java e da o mesmo erro, inclusive no editor de códigos do netbeans apresenta o mesmo. Fiz várias configurações usando o manual

Isso mesmo preciono o gatilho.
No manual tem as configurações de idioma e já testei várias, inclusive eu já troquei o idioma do teclado no PC para inglês mas nada

Já tentou acionar o suporte da multilaser?
Talvez eles tenham um manual focado para desenvolvedores, com outras configurações.

Pior que já. E o manual que eles tem é o mesmo do site Enviaram, Enviaram minha pergunta para os técnicos e estou aguardando a resposta. Pediram também pra eu enviar o leitor pra ver se tem algum defeito.

Cara conseguiu resolver esse caso? To com o mesmo problema em uma aplicação em Java.
E sempre acontece com esses leitores xingling.

image

Bom dia!
Não consegui, o jeito foi trocar o leitor