希望你能帮助我。 我有一个串行设备,然后该设备将连接到USB串行转换器,然后转换器将连接到我的PC的USB端口。系统将另一个COM端口添加到设备管理器。 我的问题是,我怎么可能将COM端口号映射到C#中的转换器?我可以通过执行SerialPort.GetPortNames()成功枚举系统中可用的COM端口,但不确定此转换器具有哪个COM端口号。
感谢 ar
答案 0 :(得分:3)
您通常可以通过WMI查询获得一些不错的信息,但它需要设备驱动程序才能合作。大多数做afaik。在Win32_SerialPort类上运行查询。您可以使用WMI Code Creator tool来试验查询并自动生成所需的C#代码。
不要指望能够自动选择设备。您需要一个配置选项以允许用户选择端口。您可以显示从查询中获得的信息,以帮助她选择正确的信息。或者让她拔掉设备并将其重新插入,添加的COM端口应该是正确的。
答案 1 :(得分:1)
我们针对不同的应用解决了这些不同的方式。我们对一个实例使用了显式配置,其中我们只有一个特定类型的设备,但是在配置系统之前不清楚它将分配给哪个COM端口。在另一种情况下,我们有一条USB电缆爆发到集线器上,其上有一堆转换器,因此我们探测了所有可以成功打开的COM端口,以寻找我们感兴趣的设备。
Windows上的USB /串行转换器有一些注意事项 - 如果您的设备类似于GPS单元,只要它在打开电源时发送数据,Windows可能会将其检测为旧的串行鼠标,如果它在启动时插入的话。此外,插入不同的USB端口可能会咀嚼额外的COM端口号(以及破坏您已完成的任何显式配置)。
答案 2 :(得分:0)
您必须在注册表中的某处查找。
我只能假设这是一个FTDI芯片。如果是这样,您可以从使用其驱动程序附带的公共API获取信息。
如果没有其他答案,我会在家里检查以后的tonite,因为我的JTAG调试器有相同的芯片。
<强>更新强>
以下是我的设备分配的COM端口(在PortName
下)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_0483&PID_5740\498C54823932\Device Parameters
我猜你可以通过usbser驱动程序枚举USB设备。
答案 3 :(得分:0)
当我遇到同样的问题(RFID阅读器)时,我检查了每个端口是否有任何数据。 可能它会在COM4:COM9中出现。 我知道这不是最好的解决方案,但我在移动设备上使用它,我确信我的COM连接......
也许在你的驱动程序的* .ini文件中有一些关于COM编号的信息。
答案 4 :(得分:0)
如果您正在使用基于FTDI的USB解决方案&lt; - &gt;在串行转换中,您可以使用FTDI网站上提供的FT_PROG
实用程序为转换器分配自定义VID:PID对,然后您可以查询以确定将哪个适配器分配给哪个虚拟端口。
或者,您可以使用每个芯片独有的FTDIChip-ID
,详细信息包括代码示例位于此处:http://ftdichip.com/Support/SoftwareExamples/FTDIChip-ID.htm