java中串口接收StringBuffer的问题
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);
// messageAreaIn.append(toHexString(inputBuffer));
count++;
if(count%4==0)
{
System.out.println(inputBuffer.length());
String Buffer= stringToHexString(inputBuffer.substring(4*count2, 4*count2+4));
System.out.println(count2+" "+Buffer);
count2++;
}
}
} catch (IOException ex) {
System.err.println(ex);
return;
}
}
// Append received data to messageAreaIn.
messageAreaIn.append(toHexString(inputBuffer));
break;
// If break event append BREAK RECEIVED message.
case SerialPortEvent.BI:
messageAreaIn.append("\n--- BREAK RECEIVED ---\n");
}
}
主要实现功能是接受串口的数据并显示,但是调试的时候总发现inputStringBuffer的长度到了512的时候再运行就变成了4,不知道是为啥,如果把messageAreaIn.append(toHexString(inputBuffer));放到count++上面之后又不会出现这个问题,但是串口接受的速度变得很慢,请各位大神指教问题出在哪?