【发布时间】:2012-01-29 18:29:23
【问题描述】:
在 C# 应用程序中,有哪些好方法可以检测是否存在连接到计算机的特定设备?当然,以编程方式。我需要支持 Windows XP 和 7。
背景
我收到了一个巨大的 C# 应用程序,它使用了一些连接的设备。这些设备是定制硬件,不能在没有软件的情况下使用。当 C# 应用程序启动时,它会搜索此类连接的设备并在适当的时候与它们进行通信。可以连接多个设备。我还没有查看搜索设备的源代码。这些设备通过 USB 或串行电缆插入 PC。它们在设备管理器中显示为 COM 端口。有时,PC 和设备之间可能存在 USB 集线器或串口转 USB 转换器。
当设备连接了某个 USB 集线器,或者使用了某个串口转 USB 转换器时,有时软件无法正确检测到该设备。有时它因 PC 而异。我们不确定它是否会导致某些驱动程序。
我被告知要研究设备搜索算法,如果可能的话,提出更好的解决方案并替换当前的实现。我以前没有做过这类任务,我需要了解 Windows 如何在后台管理设备。
如何在 C# 中搜索特定的连接设备?有哪些好的做法以及我应该注意或避免什么?
【问题讨论】:
-
您可以使用 WMI 等枚举所有连接的 (usb) 设备。据我所知,它们的工作速度很慢。不过可能有更好的方法。 stackoverflow.com/questions/3331043/…