0

状況: SerialPort からの着信データを自分の目的に役立つようにしようとしています。1 つのクラス Processor.java にいくつかのメソッドを実装しました。そのうちの 1 つ (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 に答える