0

情况: 我正在尝试使来自 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
// ...
}

我怎样才能做到这一点?

4

1 回答 1

0

唯一想到的是一个后台线程,它等待输入缓冲区满条件来处理接收到的消息并做出响应。

如果您正在以固定长度的数据包或开始-停止标记的数据包进行通信,您应该创建一个线程来监控串行端口,缓冲接收到的数据,一旦满足“数据包/消息完成”条件,就会向注册的侦听器触发事件(如果可能,在另一个线程中)。然后该侦听器将处理消息并响应(在其自己的线程中)。

于 2013-04-09T15:43:28.110 回答