Bom dia pessoal,
Tenho a seguinte situação (Após revirado o Google e os fóruns de Java), desenvolvi uma aplicação que recebe mensagens de uma dispositivo via porta Serial (No Linux), contanto quando o dispositivo manda o valor 13 (Convertido de bit para byte) não sei por-que mas é convertido para 10, creio que tenha algo a ver com CR LF do Linux. Mas ainda não consegui desvendar o mistério. Fiz um exemplo seguindo os exemplos do javax.comm e não deu o mesmo problema, abaixo mando os fontes para que entendam o meu problema.
public void serialEvent(SerialPortEvent e) {
// Create a StringBuffer and int to receive input data.
StringBuffer inputBuffer = new StringBuffer();
int newData = 0;
// Determine type of event.
switch (e.getEventType()) {
// Read data until -1 is returned. If \r is received substitute
// \n for correct newline handling.
case SerialPortEvent.DATA_AVAILABLE:
while (newData != -1) {
try {
newData = is.read();
if (newData == -1) {
break;
}
/*if ('\r' == (char) newData) {
inputBuffer.append('\n');
} else {*/
inputBuffer.append(((char) (newData) & 0xFF)+" ");
/*}*/
} catch (IOException ex) {
System.err.println(ex);
return;
}
}
// Append received data to messageAreaIn.
//int bite = (inputBuffer & 0xFF)
messageAreaIn.append(new String(inputBuffer)+" \n");
break;
// If break event append BREAK RECEIVED message.
case SerialPortEvent.BI:
messageAreaIn.append("\n--- BREAK RECEIVED ---\n");
}
}
Bom nesse código eu comentei da linha 21 até 23 pois não é preciso no meu caso, pois tenho que converter na integra o que recebo de dados.
Na linha 24 adicionei a conversão de Bit para Byte.
Fica a duvida se o problema é quando converto ou a api javax.comm tem algum problema no linux com a leitura do bit 13