情况: 我尝试将来自SerialPort的传入数据用于我的目的。在一个类Processor.java中,我实现了几个方法 - 其中一个(serialEvent)实现了gnu.io.SerialPortEventListener。它将从inputStream读取的信息存储在一个字节数组的缓冲区中。还有一种方法,它将数据写入outputStream。
问题: 我想实现一个方法(在同一个类中),它将根据从inputStream读取的消息向outputStream写入一些内容。
伪码:
@Override
public void serialEvent(SerialPortEvent event) {
// get data
}
public void writeData(String dataToWrite) {
// write data
}
public void respond() {
// write data
// wait for appropriate response (read data)
// write data
// ...
}
我该怎么做?
答案 0 :(得分:0)
只有想到的是一个后台线程,它等待输入缓冲区满条件来处理收到的消息并对其做出响应。
如果您使用固定长度数据包或启动停止标记数据包进行通信,则应创建一个线程来监视串行端口,缓冲接收到的数据,并在满足“数据包/消息完成”条件后触发事件注册的监听器(如果可能,在另一个线程中)。然后,该侦听器将处理该消息并作出响应(在其自己的线程中)。