我正在尝试与 JSSC 合作。我根据此链接构建了我的应用程序:
https://code.google.com/p/java-simple-serial-connector/wiki/jSSC_examples
我的事件处理程序如下所示:
static class SerialPortReader implements SerialPortEventListener {
public void serialEvent(SerialPortEvent event) {
if(event.isRXCHAR()){//If data is available
try {
byte buffer[] = serialPort.readBytes();
}
catch (SerialPortException ex) {
System.out.println(ex);
}
}
}
}
}
问题是我总是无法将传入的数据一次性获取。(我的消息长度为 100 字节,我在 2 个单独的呼叫中分别获得 48 和 52 个字节) - 另一方向我发送不同长度的消息。
- 在我使用的 ICD 中,有一个字段告诉我们消息的长度。(从字节 #10 到字节 #13) - 我无法读取 14 个字节:
(serialPort.readBytes(14);,
解析消息长度并读取消息的其余部分:
(serialPort.readBytes(messageLength-14);
但是如果我这样做,我将不会在一次中获得消息(我将有 2 个单独的字节 [],并且我需要它在一个片段(字节 [])中没有复制功能的工作。
- 可能吗 ?
使用以太网(SocketChannel)时,我们可以使用 ByteBuffer 读取数据。但是对于 JSSC,我们不能。
- JSSC 有什么好的替代品吗?
谢谢