Página 1 de 1

Problemas com comunicação serial em Java

MensagemEnviado: 02 Jan 2008 13:56
por Paulo
Boa tarde.

Eu desenvolvi um sistema para empresa em que trabalho, onde utilizei Java.
No sistema eu necessitava realizar comunicação serial com uma central de telefonia, daí eu utilizei a API JAVAX.COMM, daí funcionou pefeitamente, td legal, até que, depois de um tempo, já na fase de testes, descobri que quando a serial recebia um byte com o valor 0x9D ela convertia e me entregava 0x3F, depois de alguns testes constatei que isso também ocorre com o valor 0x8D e outros valores.
Continuando com os testes constatei que aparentemente ele faz isso com todos valores de 0x80 a 0x9F, mas não tenho total certeza.
Depois realizei testes com a API RXTX, mas obtive o mesmo problema, gostaria de saber se vcs já tiveram esse problema ou se vcs sabem de alguma coisa sobre essas APIs de serial não funcionarem corretamente com valores acima de 127, já que os valores menores ou iguais a 127 sempre chegam OK.

Agradeço por qq ajuda.

Até +....
Paulo D.

MensagemEnviado: 03 Jan 2008 06:41
por helton
Voce mesmo respondeu sua pergunta, o componente está lhe entrengando um char (127), e não um unsigned char (255)...
Agora voce tem que analizar se no método de retorno do componente é possível a recepção de valores num intervalo maior, ou se é fixo esse tipo de dado...no pior dos casos tenta um cast

MensagemEnviado: 03 Jan 2008 07:06
por Paulo
helton escreveu:Voce mesmo respondeu sua pergunta, o componente está lhe entrengando um char (127), e não um unsigned char (255)...
Agora voce tem que analizar se no método de retorno do componente é possível a recepção de valores num intervalo maior, ou se é fixo esse tipo de dado...no pior dos casos tenta um cast


Foi exatamente o que eu fiz (cast), o problema é que parecia estar td certo, mas não estava, agora estou analisando uma solução para o meu caso em específico, onde recebo uma cadeia de caracteres, onde eu estava juntando td em uma string, mas daí ocorreria o problema, por isso estou pensando em usar um StringBuffer, vamos ver o que vai dar, depois coloco aqui o resultado.

MensagemEnviado: 04 Jan 2008 20:50
por chipselect
olá
eu utilizo o RXTX e recebo os bytes por uma InputStream através do método read() que devolve um int (0 a 255), ou -1...

como é o código de recepção que vc está utilizando?

MensagemEnviado: 07 Jan 2008 06:42
por Paulo
chipselect escreveu:olá
eu utilizo o RXTX e recebo os bytes por uma InputStream através do método read() que devolve um int (0 a 255), ou -1...

como é o código de recepção que vc está utilizando?


Igual a você, mas eu estava passando um vetor de bytes para receber a informação e usando cast, mas não estava rolando. Agora estou recebendo em um vetor de inteiros e depois fazendo uma conversão para bytes, daí tá ok.

Valeu pela força pessoal.

P.S. => Funcionou tanto com a RXTX, quanto com a JAVAX.COMM.

Até +...
Paulo D.