如何自动检测连接到COM端口的设备
本文关键字:COM 自动检测 连接 | 更新日期: 2023-09-27 18:21:39
我想自动检测连接到计算机COM端口的设备。能够使用SerialPort类使我能够轻松地获得可用COM端口的列表。
我想对它们进行迭代,并轮询(发送命令)到每个端口,然后等待响应。然而,似乎大多数教程都建议使用DataReceived事件。我不知道如何进行串行发送,然后等待xx秒,直到收到设备的响应。
当您需要与可能在非常不可预测的时间发送内容的设备通话时,DataReceived事件非常好。你不必烧掉一个只阻塞并等待设备发送东西的线程。
但这与你试图实现的目标完全相反,你确实期望得到一些东西。因此,不要使用DataReceived,使用ReadTimeout属性设置为适当低值的Read()。现在很简单了。还可以考虑使用DsrHolding属性。当有一个设备连接到端口并通电时,这是真的。
我应该注意到,这样做相当危险。你不知道机器上连接着什么类型的设备,向它们发送一些它们不是为处理而设计的东西是相当棘手的。如果你发送的"你在吗?"命令恰好意味着机器人控制器"以1G的加速度回家",那么有人很容易受伤。在任何工业环境中都不能这样做。
到目前为止,最好的方法是让别人负责做好这件事。添加一个选项菜单,让用户设置端口名称。以及设置,它们也很重要,没有办法自动检测它们。选项对话框可以有一个"帮助我找到设备"按钮,现在它是安全的和有用的。
我相信WMI有查询COM上设备的功能,还有Linq到WMI库可以帮助
希望这能帮助