【发布时间】:2015-08-28 12:56:57
【问题描述】:
我正在开发一个应用程序,该应用程序需要能够通过 Windows 操作系统上的串行通信与设备进行通信。该应用程序是用 Java 编写的。我正在使用 jSSC 库。 (Javax.comm 有问题,RxTx 不支持 Java 8,除了非官方更新)这些设备可以使用串行端口直接连接到 PC,或者使用 USB 到串行转换器。
我的问题: Windows 上的 COM 端口是动态的。这引发了定义要连接到哪个通信端口的问题。有没有办法自动确定要连接到哪个 COM 端口?
到目前为止,我能够提出的唯一解决方案包括扫描所有 com 端口以查找活动端口,保存此列表,然后要求用户插入设备并执行另一次扫描 - 然后额外的 COM 端口将要连接的那个。
或者,设备将响应特定的“识别”数据包:我可以打开每个 COM 端口并发送此数据包并评估响应。这可能会导致其他设备在短时间内被劫持,这并不理想。
【问题讨论】:
-
我还没有看到一个好的自动检测方案。你永远不知道其他设备会如何反应,就像你提到的那样。如果您仅在 Windows 上运行,我建议在 .net 中使用可以捕获 USB 插入事件的帮助程序库。如果这是经典的 DB9,那我什么都没有。查看我的名为 Porty 的应用程序,它执行端口名称检测。您可能可以根据需要对其进行调整。 github.com/corytodd/porty
-
谢谢!我查看了您的应用,看起来可能会有所帮助。
标签: java windows serial-port jssc