Bom dia.
Estou com um problema na leitura de dados da porta serial que consiste no seguinte:
eu envio para a porta serial um short que varia de 0 a 7, sendo assim, meu PIC deve me enviar os dados que estao dispniveis na porta de 0 a 7, conforme solicitado.
A parte do pic ta blza, mas notei que no java , toda vez que eu rodo, ele acaba pegando valores repetidos, como se a porta estivesse suja. Gostaria de saber de uma maneira de a cada vez que eu ler o dado disponivel poder limpar o “buffer” para que o dado se renove sempre, nao correndo o risco de ficar pegando dados antigos.
Estou usando SerialComm.
Segue trecho do codigo:
public void serialEvent(SerialPortEvent event) {
switch (event.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:
byte[] readBuffer = new byte[20];
try {
int numBytes = 0;
while (inputStream.available() > 0) {
numBytes = inputStream.read(readBuffer);
}
String result = new String(readBuffer);
result = result.substring(1, numBytes);
short dadoLido = (short)(inputStream.read()); // peguei o valor aqui
inputStream.close();
} catch (IOException e) {
}
}
}
Alguem sabe como me ajudar com isso?