Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

dario1133

Sinal dos dados

Mensagens Recomendadas

dario1133    0
dario1133

Estou a receber dados via porta serie num programa em java.

Se o valor dos dados recebidos forem menores ou igual a 127, são apresentados correctamente.

Se forem superiores, aparece sempre 'FD', penso que tenha a ver com o sinal.

Tenho:

int data_0 = br.read();
data_0 = data_0 & 0x00FF;

Alguém sabe como contornar a situação?

Editado por brunoais
geshi

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
brunoais    67
brunoais

O int em java é sempre signed int.

Tenta arranjar maneira de, quem envia o dado, enviar um numero que, transformado em int, não dê um numero negativo.

Já agora, que classe é esse br?

Já agora... agora que eu vejo...

Será que em vez de:

0x00FF

Querias usar:

0xFF

?

Editado por brunoais

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1140
HappyHippyHippo

se queres com 1 byte, porque não usas o "byte" ?

byte data = br.read(); // <<--- dava jeito também saber o raio é o br ...


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
dario1133    0
dario1133
br = new BufferedReader(isr);


InputStreamReader isr = new InputStreamReader(is);


is = sp.getInputStream();


SerialPort sp;

Editado por brunoais
geshi

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1140
HappyHippyHippo

a função BufferedReader.next() devolve um inteiro, mas o que é lido é um valor de 2 bytes, isto porque é para ser usado na leitura de texto.

basta teres :

SerialPort sp;
InputStream is = sp.getInputStream();
int byte = is.read(); // foi lido somente 1 byte !!!


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.