C# 如何自动检测连接到COM端口的设备

C# 如何自动检测连接到COM端口的设备,c#,C#,我想自动检测连接到计算机COM端口的设备。能够使用SerialPort类使我能够轻松获得可用COM端口的列表 我希望遍历它们,并轮询(发送命令)到每个端口,然后等待响应。然而,似乎大多数教程都建议使用DataReceived事件。我不知道如何进行串行发送,然后等待xx秒,直到收到设备的响应。我相信COM上有查询设备的功能,还有一个库可能会有所帮助 希望这对您有所帮助当您需要与可能在不可预知的时间发送内容的设备通话时,DataReceived事件非常好。你不必烧掉一个线程,它只是阻塞并等待设备发送

我想自动检测连接到计算机COM端口的设备。能够使用SerialPort类使我能够轻松获得可用COM端口的列表

我希望遍历它们,并轮询(发送命令)到每个端口,然后等待响应。然而,似乎大多数教程都建议使用DataReceived事件。我不知道如何进行串行发送,然后等待xx秒,直到收到设备的响应。

我相信COM上有查询设备的功能,还有一个库可能会有所帮助


希望这对您有所帮助

当您需要与可能在不可预知的时间发送内容的设备通话时,DataReceived事件非常好。你不必烧掉一个线程,它只是阻塞并等待设备发送一些东西

但这与你想要达到的目标完全相反,你确实期望得到一些东西。因此,不要使用DataReceived,使用ReadTimeout属性设置为适当低值的Read()。现在它很简单。还考虑使用DSRSTORD属性。当有一个设备连接到端口并通电时,这是真的

我应该指出,这样做是相当危险的。你不知道机器上连接的是什么类型的设备,给它们发送一些它们没有设计来处理的东西是相当棘手的。如果你发送的任何“你在吗?”命令恰好意味着机器人控制器“以1G的加速度回家”,那么有人很容易受伤。在任何类型的工业环境中都无法做到这一点


到目前为止,最好的办法是让别人负责把这件事做好。添加允许用户设置端口名的选项菜单。设置也很重要,无法自动检测。选项对话框可能会有一个“帮助我找到设备”按钮,现在它既安全又有用。

好吧,您还没有编写任何代码吗?已经看过这篇文章了吗?WMI
ManagementObjectSearcher.Get()
是否算作“您在吗?”。我完全可以理解您的机器人事故场景,因此我想知道
ManagementObjectSearcher
在这方面是否安全。