Problemas com comunicação serial em Java

Programação Java

Moderadores: 51, guest2003

Problemas com comunicação serial em Java

Mensagempor Paulo » 02 Jan 2008 13:56

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.
"Se o teu sonho for maior que ti, Alonga tuas asas, Esgarça os teus medos, Amplia o teu mundo, Dimensiona o infinito, E parte em busca da estrela... " (Trecho de Voa - Ivan Lins / Leda Selma)
Avatar do usuário
Paulo
Byte
 
Mensagens: 421
Registrado em: 07 Nov 2006 07:26

Mensagempor helton » 03 Jan 2008 06:41

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
Helton Marques
"Priorize as Prioridades"
helton
Byte
 
Mensagens: 146
Registrado em: 16 Out 2006 09:18
Localização: São José-SC

Mensagempor Paulo » 03 Jan 2008 07:06

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.
"Se o teu sonho for maior que ti, Alonga tuas asas, Esgarça os teus medos, Amplia o teu mundo, Dimensiona o infinito, E parte em busca da estrela... " (Trecho de Voa - Ivan Lins / Leda Selma)
Avatar do usuário
Paulo
Byte
 
Mensagens: 421
Registrado em: 07 Nov 2006 07:26

Mensagempor chipselect » 04 Jan 2008 20:50

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?
chipselect
Word
 
Mensagens: 744
Registrado em: 16 Out 2006 18:50

Mensagempor Paulo » 07 Jan 2008 06:42

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.
"Se o teu sonho for maior que ti, Alonga tuas asas, Esgarça os teus medos, Amplia o teu mundo, Dimensiona o infinito, E parte em busca da estrela... " (Trecho de Voa - Ivan Lins / Leda Selma)
Avatar do usuário
Paulo
Byte
 
Mensagens: 421
Registrado em: 07 Nov 2006 07:26


Voltar para Java

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x