2009-04-22 128 views
2

我有一個應用程序使用javax.comm從com端口讀取數據。javax.comm:設備斷開連接時出錯

我遇到的問題是,如果我是從閱讀器是意外斷開我在控制檯中的錯誤,說「WaitCommEvent:錯誤5」

我已經看了看周圍,不能找到關於此的任何有用的信息。我已將所有notifyOn *方法設置爲true,因此我認爲我應該接收所有事件,但我沒有捕獲這個事件。

打印出來的錯誤消息不是來自我的代碼中的任何地方,所以它必須位於javax.comm包的某處。任何人都可以告訴我如何處理這個錯誤,以便我可以在發生時正確關閉com端口?

謝謝!

回答

2

如果有人對此感興趣,我找到了解決方案。我使用的是javax.comm api,但解決了我用rxtx api替換它的問題(http://rxtx.qbang.org/wiki/index.php/Main_Page)。不需要更改代碼,但是現在,當設備斷開連接時,我收到IOException,並顯示消息「底層輸入流返回了零字節」。我處理該消息並啓動一個新線程。在新線程中,我調用port.close()和port.removeEventListener()。這兩個調用必須在新線程中完成,否則應用程序將掛起。

2

我們一直在使用大量的時間來獲取javax.comm的工作,發現在我們的例子中是導致問題的COM驅動程序(在幾臺Windows 7計算機上)。 如果司機也是你的問題,你正在使用Windows 7或Vista的可能(和您使用的是多產/ Logilink系列動力電纜),那麼這可能是解決:) http://www.akosta.dk/category/technical-notes/

希望你得到它工作!

2

這個問題是近2歲,但也許另一個需要一個可能的解決方案:

我有java.comm同樣的問題:「WaitCommEvent:錯誤5」 出現此消息多次,如果COM端口已斷開, 但SerialPort對象未關閉。

我的解決方案是關閉SerialPort對象,如果讀/寫串口的IO流引發異常。