gpt4 book ai didi

Java串行通信: way to set receieve threshold when using async.读取通知

转载 作者:行者123 更新时间:2023-12-01 16:02:58 27 4
gpt4 key购买 nike

我有一些使用 JavaComm API 的代码。它实现了 SerialPortEventListener 并且字符的接收是异步发生的。这工作正常,除了我的串行事件回调在收到大约 17 个字符后收到通知,对于我的数据包解析,我需要在收到 <= 6 个字符时收到通知。有没有办法配置串行 API 来调用 async.指定编号时的通知。已收到字符数?

谢谢你,弗雷德。

最佳答案

当数据在流中可用时,您得到的只是一个流和一个 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;
}
}

关于Java串行通信: way to set receieve threshold when using async.读取通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3367872/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com