java中串口接收StringBuffer的问题

Rock_N_Roll_ 2015-10-05 08:46:05
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++上面之后又不会出现这个问题,但是串口接受的速度变得很慢,请各位大神指教问题出在哪?
...全文
73 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

51,395

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧