通常情况下,您可以通过WMI查询获得一些有用的信息,但需要设备驱动程序的配合。大多数都支持此操作。在Win32_SerialPort类上运行查询。您可以使用WMI Code Creator工具尝试查询并自动生成所需的C#代码。
不要指望能够自动选择设备。您需要一个配置选项来允许用户选择端口。您可以显示从查询中获取的信息以帮助她选择正确的端口。或者请她拔掉设备并重新插入,新增的COM端口应该就是正确的端口。
我们针对不同的应用程序采用了不同的解决方案。对于我们拥有特定类型设备的唯一实例的情况,我们使用显式配置,但在系统配置之前,无法确定它将被分配到哪个COM端口。在另一种情况下,我们有一根USB电缆,它分成一个带有许多转换器的集线器,因此我们探测了所有我们能够成功打开的COM端口,以寻找我们感兴趣的设备。
关于Windows上的USB /串行转换器有几个注意事项--如果您的设备是像GPS单元这样的设备,每当它通电时都会发送数据,则在启动期间插入设备可能会导致Windows将其检测为旧的串行鼠标。此外,插入不同的USB端口很可能会占用额外的COM端口号(以及破坏您所做的任何显式配置)。
你需要在注册表中查找这个。
我只能假设这是一个 FTDI 芯片。如果是这样,你可以通过使用他们的公共 API 获取信息,该 API 已包含在驱动程序中。
如果没有其他答案,我晚些时候回家后会检查,因为我的 JTAG 调试器也有同样的芯片。
更新:
这是我的设备分配的 COM 端口的注册表键(在 PortName
下)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_0483&PID_5740\498C54823932\Device Parameters
我想你可以使用usbser驱动程序枚举USB设备。
当我遇到同样的问题(RFID读卡器)时,我检查了每个端口是否有数据。可能是在COM4:COM9之间的某个端口。
我知道这不是最好的解决方案,但我在移动设备上使用它,因为我确定我的COM连接...
也许在您的驱动程序的*.ini文件中有一些关于COM号码的信息。
FT_PROG
实用程序为转换器分配自定义VID:PID对,然后您可以查询以识别哪个适配器分配给哪个虚拟端口。FTDIChip-ID
,有关此信息(包括代码示例)的详细信息位于此处:http://ftdichip.com/Support/SoftwareExamples/FTDIChip-ID.htm。