Converter ASCII para Unicode

8 respostas
P

Peço desculpas por este post (pois já havia feito outro parecido) como não obtive resposta tentei implementar um tipo de solução e não está funcionando 100%.

Tenho uma balança que passa dados ASCII e estou tentando converter para strings (Unicode) no Java.
Implementei o seguinte código:

Charset charset = Charset.forName("ISO-8859-1");
    CharsetDecoder decoder = charset.newDecoder();
    CharsetEncoder encoder = charset.newEncoder();

    ByteBuffer bbuf = encoder.encode(CharBuffer.wrap(Dadoslidos));
    CharBuffer cbuf = decoder.decode(bbuf);
    String BalancaTratamento = cbuf.toString();
    System.out.println(BalancaTratamento);

Alguns caracteres eu consigo ler (geralmente números) outros saem como o exemplo abaixo:

8000 [][][][]
ou
=p`

Desculpem pela insistencia mas é que preciso realmente converter de forma clara esses dados.

8 Respostas

T

A sua balança não passa “dados ASCII”; são dados em binário que provavelmente você não está conseguindo converter.

Você tem um link para o manual da tal balança?

P

Eu falei em ASCII por em contato com o suporte técnico da balança o mesmo me disse que trasmite em ASCII, e como não tenho experiencia em automação ou balanças acabei aceitando a explicação do suporte deles.

O link abaixo é do manual da balança:

http://souzen.bwilson.ind.br:8888/home/balanca/9091_ac_usu.pdf

Esse link é um documento do suporte deles sobre a mesma balança (mais resumido):

http://souzen.bwilson.ind.br:8888/home/balanca/Balanca_9091AC.doc

T

petter:
Eu falei em ASCII por em contato com o suporte técnico da balança o mesmo me disse que trasmite em ASCII, e como não tenho experiencia em automação ou balanças acabei aceitando a explicação do suporte deles.

Dica: pode ser que você tenha programado a paridade errada para obter os bytes da balança. Se esse for o caso, caracteres perfeitamente normais aparecerão incorretos na hora de serem lidos.

A

thingol:

Dica: pode ser que você tenha programado a paridade errada para obter os bytes da balança. Se esse for o caso, caracteres perfeitamente normais aparecerão incorretos na hora de serem lidos.

Vc quer dizer, se a balança está usando big endian ou little endian?

T

Não tem nada a ver com big & little endianness.

É se a paridade é par ou ímpar mesmo. (Na hora de configurar sua balança e seu software: EVEN, ODD, MARK, SPACE, NONE). Outra coisa que pode dar problemas é se a velocidade estiver diferente.

Use o HyperTerminal, se estiver no Windows, para conferir os parâmetros (puxe os dados diretamente da balança, em vez de usar um programa).

P

Como diria Jack vamos por partes. :lol:

  • No Hyperterminal recebo de forma difente de que pela aplicação Java, sai algo dessa forma: ‚½ð`003¸00000000™‚½ (no Hyperterminal é exibido um monte de íóù. Colei aqui e saiu 1/2, tm. Deve ser codificação.

  • Tanto na balança como na minha aplicação e nas configurações de COM1 do Windows configurei dessa forma:

  • paridade: EVEN

  • baudrate: 4800

  • stopbits: 7

E o negócio aqui continua retorna uma monte de caracteres estranhos.

T

Pelo que sei das balanças Toledo, parece que alguém já escreveu um módulo Java para o protocolo P01. É questão de procurar na Internet, porque já vi isso mas não sei mais onde é que vi. O tal protocolo P01 contém esses caracteres esquisitos, que devem ser interpretados em binário.

P

Humm. Vou dar um procurada, o que complica é que já rodei o Google e não retornou nada.

Sobre esse tratamento não tem como ser feita na “mão” em Java?

É que comunico e mando impressões normalmente via porta serial para um impressor de código de barras Toledo no protocolo P03. Esse balança configura um protocolo para a comunicação com micro sem passar pelo P01, mas mesmo assim não resulta nada legivel.

Criado 11 de julho de 2006
Ultima resposta 11 de jul. de 2006
Respostas 8
Participantes 3