我有一些使用JavaComm API的代码。它实现了SerialPortEventListener,并且字符的接收是异步发生的。除收到约17个字符后通知我的serialEvent回调外,此方法工作正常,对于我的数据包解析,我需要在接收到
谢谢,
弗雷德。
最佳答案
当流中有可用数据时,您所获得的只是一个流和一个SerialPortEvent.DATA_AVAILABLE。您可以做的是添加一个间接级别,并创建自己的侦听器,当通过6个字符并仅输入6个字符的字节数组时将调用该侦听器。我在下面添加了插入代码的位置。具体实施取决于您。
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 {
while (inputStream.available() > 0) {
int numBytes = inputStream.read(readBuffer);
}
// partition readBuffer into chunks of 6 bytes
...
registeredListener.dataReceived(sixByteByteArray);
} catch (IOException e) {
}
break;
}
}