【发布时间】:2011-09-09 20:32:02
【问题描述】:
我有 4 个 USB 串行转换器 (Prolific) 连接到 USB 集线器。当我查看设备管理器时,我会看到动态分配的 Com 编号。但是在将集线器重新插入另一个 USB 端口或系统 reebot 之后,这些 com 编号有时会发生变化。有没有办法在不手动搜索这些数字的情况下为每个转换器更新这些数字?基本上我想在我的 C# 项目中有一个方法,它会为每个转换器寻找一些唯一的 id,然后获取新的 com 号。有没有办法做到这一点(尝试了一些 wmi 查询但没有成功)?
今天我想了一个解决方法。所以我有另一个问题。如何获取有关 USB 集线器的信息?基本上我可以以某种方式找到我的 USB 集线器,然后检索有关连接到集线器端口设备的信息。然后通过 wmi 查询获取这些设备的 com 号将非常容易。我使用 USBView 来查看是否可以获得此类信息。我可以看到从 Root Hub -> Generic USB Hub -> Prolific USB-to-serial Comm Port 开始的树,但是现在如何在代码中执行此操作。有什么想法吗?
【问题讨论】:
-
不,USB 是总线,它不显示端口号。是的,当你在测试(不是在生产中)时,这是一个痛苦的问题。除了将它们一个接一个地插入并在代码中观察 SerialPort.GetPortNames() 之外,您无能为力。拥有一种从设备数据中识别物理设备的方法是最好的解决方案。
-
我不记得很多细节了,但是创建的每个端口都有一个关联的注册表项(位置取决于 USB 串行芯片的制造商),您应该能够通过它来区分它们。
-
为了避免这个问题,我改用 Moxa 8 端口 PCI 串口卡。
标签: c#