【问题标题】:java serial I/O: handling USB serial connection/disconnection in a robust mannerjava 串行 I/O:以稳健的方式处理 USB 串行连接/断开连接
【发布时间】:2010-01-26 21:52:08
【问题描述】:

我正在使用rxtx 在 Java 中使用提供 USB 通信端口的 FTDI2232H 进行串行 I/O 处理。它工作得很好,除了一个例外:如果我拔下 USB 电缆,使 COM 端口在运行时消失,它会左右喷出异常:

java.io.IOException: No error in nativeavailable
at gnu.io.RXTXPort.nativeavailable(Native Method)
at gnu.io.RXTXPort$SerialInputStream.read(RXTXPort.java:1427)
at gnu.io.RXTXPort$SerialInputStream.read(RXTXPort.java:1339)

当我再次重新插入电缆时,它无法恢复。

有什么方法可以让 rxtx 在 USB 通信端口连接/断开时正常工作? (我尝试向 rxtx 邮件列表发帖,但由于某种奇怪的原因,即使我订阅了该列表,我也无法发送消息。我已向列表管理员发送电子邮件,但没有收到任何回复。)

如果没有,是否有另一个串行 I/O 框架可以?

【问题讨论】:

  • 自从遇到这个问题,我切换到PureJavaComm,已经使用了几年,没有任何问题。我已经放弃使用 RXTX;它不再维护良好。 NRJavaSerial 是 RXTX 的一个维护分支——不过在过去几年里没有尝试过。

标签: java usb serial-port rxtx


【解决方案1】:

听上去,我不知道这在 Java 中是否可行,但有一条 Windows 消息会被广播 - WM_DEVICECHANGE 消息,您可能需要拦截此消息,如果它是设备弹出,优雅地关闭rxtx代码。这是一个示例code,用于检查 CDROM 驱动器中 CD 的插入/移除(它不是 Java)。

编辑:添加了另一个您可能感兴趣的链接here

希望这会有所帮助, 最好的祝福, 汤姆。

【讨论】:

    【解决方案2】:

    好吧。我们使用 WM_DEVICECHANGE 并用 C++ 编码并准备好 DLL,然后通过 JNI 从 JAva 应用程序访问它。所以我们会收到连接和断开连接的通知

    【讨论】:

      猜你喜欢
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-27
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多