【问题标题】:javax.comm: Error when device is disconnectedjavax.comm:设备断开连接时出错
【发布时间】:2009-04-22 19:28:32
【问题描述】:

我有一个使用 javax.comm 从 com 端口读取数据的应用程序。

我遇到的问题是,如果我正在读取的设备意外断开连接,我会在控制台中收到错误消息“WaitCommEvent: Error 5”

我环顾四周,找不到任何有用的信息。我已将所有 notifyOn* 方法设置为 true,所以我认为我应该接收所有事件,但我没有捕捉到这个。

打印出来的错误消息不是来自我的代码中的任何地方,所以它必须在 javax.comm 包的某个地方。谁能告诉我如何处理这个错误,以便在它发生时我可以正确关闭 com 端口?

谢谢!

【问题讨论】:

    标签: java error-handling javax.comm


    【解决方案1】:

    如果有人对此感兴趣,我找到了解决方案。我使用的是 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(并且您使用的是 Prolific/Logilink 串行电缆),那么这可能是解决方案 :) http://www.akosta.dk/category/technical-notes/

      希望你能成功!

      【讨论】:

        【解决方案3】:

        这个问题已经有将近 2 年的历史了,但也许另一个问题需要一个可能的解决方案:

        我对 java.comm 有同样的问题:“WaitCommEvent: Error 5” 此消息多次出现,如果 COM 端口断开, 但 SerialPort 对象没有关闭。

        如果 SerialPort 的 IO 流的读/写引发异常,我的解决方案是关闭 SerialPort 对象。

        【讨论】:

          猜你喜欢
          • 2014-07-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-09
          • 2018-07-27
          • 2011-10-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多