Problemas na leitura de uma string

3 respostas
A

Pessoal estou tendo dificuldades em ler uma string a qual estou recebendo via porta serial (COM). Estou fazendo a leitura nesta COM a qual está conectada a uma balança da Toledo. Esta balança quando verificado através do hyperterminal retorna a seguinte string .0+(00180000000000, onde os primeiros quatro caracteres indicam que o peso está estabilizado e a partir do sétimo caracter até o décimo indica o peso da balança. No caso do exemplo eu teria como resultado 180.0 Kg. Acontece que ao rodar o programa que tenho para leitura na porta serial me é retornado na tela do eclipse o seguinte resultado:

String: .+0(…
String: 0018…
String: [telefone removido]…

O programa que tenho para fazer a leitura na porta serial é o SimpleRead da página da Sun o qual adaptei, mas a leitura na porta é feita em bytes, os quais transformo em String. Tentei fazer um replaceAll, mas ao colocar o caracter a ser substituído verifiquei que o . que aparece na tela do eclipse, onde dei um System.out.println na verdade não é um ponto e ao colarmos o mesmo no local de substituiçao ele não é reconhecido como caracter. Ao copiar a string que está sendo impressa no eclipse o resultado é o seguinte:

String teste:+0(

Note que o restante da string não aparece devido aos caracteres estranhos

Agradeço se alguém puder dar uma dica e indicar se existe algum
outro tipo de declaração de variável que eu possa utilizar ao invés de
byte para capturar esta string direto na porta serial.

3 Respostas

T

Use String mesmo. Provavelmente o tal caracter estranho é um STX (código ASCII 03) - estou chutando porque nunca mexi com uma balança dessas… Para confirmar isso, faça o seguinte: imprima os códigos numéricos de cada caracter, provavelmente usando o seguinte código (estou supondo que a string “s” tenha os caracteres lidos, e ponha a quantidade certa de parênteses…)

for (int i = 0; i < s.length(); ++i) {
    System.out.println (Integer.toHexString((s.charAt(i) & 0xFF) | 0x100).substring(1,3));
}
D

Valeu, vou testar e ver os valores que me são retornados.

D

Pessoal, ainda estou tentando solucionar este problema de quebra da string na leitura da mesma, se alguém tiver uma dica será bem vinda, pois estou meio perdido e sem idéia de como resolver este problema.

Criado 19 de dezembro de 2004
Ultima resposta 3 de jan. de 2005
Respostas 3
Participantes 3