Don*_*alo 6 c# windows hardware
在C#应用程序中,有哪些好方法可以检测连接到计算机的某些设备的存在?当然是以编程方式.我需要支持Windows XP和7.
背景
我已经获得了一个使用某些连接设备的巨大C#应用程序.这些设备是定制硬件,并非设计用于没有软件.当C#应用程序启动时,它会搜索此类连接的设备并在适当时与它们通信.可以有多个连接的设备.我没有查看搜索设备的源代码.使用USB或串行电缆将设备插入PC.它们在设备管理器中显示为COM端口.有时PC和设备之间可能有USB集线器或串行到USB转换器.
当设备与某个USB集线器连接或使用某些串口转USB转换器时,软件有时无法正常检测到该设备.有时它因PC而异.我们不确定它是否会导致一些司机.
我被告知要研究设备搜索算法,如果可能的话,提出更好的解决方案并替换当前的实现.我以前没有完成这类任务,我需要了解Windows如何管理设备.
如何在C#中搜索特定的连接设备?什么是一些好的做法,我应该注意或避免什么?
您可以在注册表中找到所有设备: HKLM/CurrentControlSet/Enum ( http://msdn.microsoft.com/en-us/library/windows/hardware/ff546173(v=vs.85).aspx )
但是串口会出现问题。您无法确定哪个设备连接到串行端口。它可以是移动电话、调制解调器、鼠标、您的设备、另一个自定义设备等。为了保证它是连接到给定串行端口的您的设备,您必须尝试与其通信。如果它以正确的方式响应 - 那么是的,它就是您的设备。
因此,许多与串行设备配合使用的程序要求用户手动选择设备连接的串行端口。
更新:
关于枚举串行端口的另一个链接:http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/afb62e84-53e5-4f17-ba91-8de15c4c2e38/