我正在开发一个应用程序,需要能够通过Windows OS上的串行通信与设备进行通信。该应用程序是用Java编写的。我正在使用jSSC库。 (Javax.comm有问题,RxTx除了非正式更新外没有Java 8支持)设备可以使用串行端口直接连接到PC,或使用USB到串行转换器。Windows上的Java通信端口 - 自动端口检测
我的问题: 窗口上的COM端口是动态的。这提出了一个问题来定义连接到哪个通信端口。有没有办法自动找出连接哪个COM端口?
到目前为止,我已经能够提出的唯一解决方案涉及扫描所有通信端口的活动端口,保存该列表,然后要求用户插入设备并执行另一次扫描 - 额外的COM端口将会成为连接的人。
或者,设备将响应特定的“识别”数据包:我可以打开每个COM端口并发送此数据包并评估响应。这有其他设备被短时间劫持的风险,这并不理想。
我还没有看到一个很好的自动检测方案。你永远不知道其他设备如何反应,因为你已经提到。如果你只在Windows上运行,我会建议一个.net中的帮助程序库,它可以捕获USB插入的事件。如果这是一个经典的DB9,那么我对你没有任何帮助。查看我的名为Porty的应用程序,它执行端口名称检测。你可能可以适应你的需求。 https://github.com/corytodd/porty –
谢谢!我看了一下你的应用程序,看起来可能会有所帮助。 –