关于java串口通信的问题

cxxlp 2009-08-13 10:22:13
java 发送数据,另一端,有时会正常接收到 有时只会接收前8个字符,,经常数据接收不完整,请问这是怎么回事啊
...全文
61 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
三仙半 2009-08-13
  • 打赏
  • 举报
回复
你检查下你发送的字符中是否有控制代码,如果存在,数据会被切断。
cxxlp 2009-08-13
  • 打赏
  • 举报
回复

发送数据

public void WritePortData(byte [] aa){

try{

outputStream = serialPort.getOutputStream();
outputStream.write(aa);
outputStream.flush();

}catch(Exception ee){


return ;

}


}





串口连接:

public void connectPort() {



if (this.serialPort != null) {
this.serialPort.close();
}
try {
portId = CommPortIdentifier.getPortIdentifier(this.portName);
serialPort = (SerialPort) portId.open("ReadComm", 2000);
this.p3f2.setText(this.portName + " Success\n");

} catch (Exception ee) {

JOptionPane.showMessageDialog(this, ee.toString(), "Message",
JOptionPane.INFORMATION_MESSAGE);
this.p3f2.setText(this.portName + " failure\n");
}
try {
serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8,
SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

} catch (Exception ee) {

JOptionPane.showMessageDialog(this,
"Please connect serial port first!", "Message",
JOptionPane.INFORMATION_MESSAGE);
}
try {

this.inputStream = serialPort.getInputStream();
this.serialPort.addEventListener(this);

} catch (Exception ee) {}
serialPort.notifyOnDataAvailable(true);
}




接收数据代码:
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[21];
try{
while(inputStream.available()>0){
int numBytes=inputStream.read(readBuffer);
}

String comStr = new String(readBuffer).trim();



}
} catch (Exception e) { }
break;
}
}
紫炎圣骑 2009-08-13
  • 打赏
  • 举报
回复
贴一下你的代码看看

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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