2013-04-09 29 views
0

情況: 我想從我的目的使SerialPort有用的傳入數據。在一個類Processor.java中,我實現了幾個方法 - 其中一個(serialEvent)實現了gnu.io.SerialPortEventListener。它將從inputStream中讀取的信息存儲在一個字節數組的緩衝區中。還有一種將數據寫入outputStream的方法。RXTX中的同步方法

問題: 我想要實現的方法(在同一個班),這將寫的東西依賴於從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

唯一想到的是一個後臺線程,它等待輸入緩衝區滿條件來處理收到的消息並作出響應。

如果您使用固定長度數據包或啓停標記數據包進行通信,則應創建一個線程來監視串行端口,緩衝接收到的數據,並且一旦滿足「數據包/消息完成」條件以觸發事件到註冊的監聽器(如果可能,在另一個線程中)。該監聽器然後將處理該消息並作出響應(在其自己的線程中)。