2013-01-16 68 views
0

我很難搞清楚如何正確使用RXTX傳輸(從今天的Git開始)。RXTX with Netty-4.0.0-Beta1-SNAPSHOT

我能夠編寫入站處理程序,它們使用從串行端口讀取的內容,對其進行解碼,並通過自定義出站處理程序將其他內容發送到串行端口。到目前爲止很好。

現在有一個用例,我需要通過主程序的MessageToByteEncoder(我之前提到的同一個自定義外部處理程序)編寫消息(最終,這實際上是一個使用下面的Netty的庫)。所以基本上,我試圖做與上述情況相同,除非我不通過解碼器併發送消息從主程序寫入而不是入站處理程序。這種情況似乎不適用於我的情況:似乎沒有任何事情發生,就好像我的消息沒有發送一樣。不幸的是,在Netty中沒有太多的日誌語句,我可能是錯誤的,但是我可能會遇到問題,因爲主線程不在事件循環中(這裏沒有什麼意外!)。

不幸的是,RXTX例子只是從入站處理程序(通過ChannelHandlerContext)寫入消息,所以我找不到我在做什麼錯誤,或者如果在Netty中最近添加了這個錯誤。

有什麼建議嗎?

+0

其實,我調查了多發一點點。我寫了一個Arduino草圖,發送「AT \ n」字符串時發回「OK」。到目前爲止,我可以通過串口監視器來檢查。然後,我改變了Rxtx示例,以便指定正確的串行端口和正確的波特率。我可以看到Arduino接收到了一些東西,但是當調用buf.writeBytes(in,buf.writableBytes())時,我陷入了RxtxChannel.doReadBytes()方法中... – jeje

+0

Hum。我可能發現了這個問題:如果我在調試模式下使用RxtxChannel.doConnect()中的斷點運行,我可以完成這項工作。我想現在有一個競爭條件或需要等待... – jeje

+0

其實,我現在可以確認這一點:如果我添加像Thread.sleep(5000)之後的cpi.open(getClass()。getName() ),1000)它工作正常! – jeje

回答

0

你應該能夠只是這兩種方式中的一種寫:

Channel channel = ... 
channel.write(YourMessage); 

ChannelHandlerContext ctx = ... 
ctx.write(YourMessage) 
+0

第一個選項是我使用的選項。我無法使它正常工作。運行時沒有錯誤,但好像我的消息不想寫入。 如何使用第二個選項?我應該創建自己的上下文嗎?如果是這樣從什麼?我連接後只有未來的頻道。 – jeje

+0

第一個應該工作..如果不是,請打開一個錯誤報告 –