Olá a todos, estou voltando a fazer alguns testes.
Criei um sistema que faz comunicação serial, o mesmo funciona perfeito no windows, agora preciso fazer o mesmo funcionar no linux. Estou depurando e descobri qual é o problema, mas queria saber o pq isso ocorre.
public void serialEvent(SerialPortEvent ev){
StringBuffer bufferLeitura = new StringBuffer();
int novoDado = 0;
switch (ev.getEventType()) {
case SerialPortEvent.BI:
case SerialPortEvent.OE:
case SerialPortEvent.FE:
case SerialPortEvent.PE:
case SerialPortEvent.CD:
case SerialPortEvent.CTS:
case SerialPortEvent.DSR:
case SerialPortEvent.RI:
case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
break;
case SerialPortEvent.DATA_AVAILABLE:
//Novo algoritmo de leitura.
while(novoDado != -1){
try{
novoDado = entrada.read();
if(novoDado == -1){
break;
}
if('\r' == (char)novoDado){
bufferLeitura.append('\n');
}else{
bufferLeitura.append((char)novoDado);
}
}catch(Exception ioe){
System.out.println("Erro de leitura serial: " + ioe);
}
}
setResposta(new String(bufferLeitura));
System.out.println(getResposta());
break;
}
}
Esta é a função que recebe os dados, no windows depurando, eu sempre recebo um -1 quando chega no final
da comunicação "automáicamente", no caso do linux eu n recebo esse -1 automaticamente, e como eu estou me comunicando com um hardware especifico, ele sempre manda a mesma coisa.
Alguem poderia me dizer pq isso ocorre? o que eu posso fazer?
Testei no ubuntu e no debian.
Desde já obrigado.
