2010-08-24 57 views
4

希望你能帮助我解决这个问题。 我有一个串口设备,这个设备然后会连接到一个USB串口转换器,然后转换器将连接到我的电脑的USB端口。系统会将另一个COM端口添加到设备管理器。 我的问题是,我怎么可能映射COM端口号到C#中的转换器?通过执行SerialPort.GetPortNames(),我可以成功枚举系统中可用的COM端口,但不确定此转换器具有哪个COM端口号。获取有关USB串行转换器的信息

感谢 AR

+1

如果这些设备中的两个连接,系统应该如何运行? – 2010-08-24 12:14:43

+1

@Rowland Shaw:USB设备使用序列号来区分相同的硬件。 – leppie 2010-08-24 12:15:54

回答

3

尽管它需要设备驱动程序进行合作,但通常可以从WMI查询中获得一些体面的信息。大多数做afaik。在Win32_SerialPort类上运行查询。您可以使用WMI Code Creator tool来尝试查询并自动生成您需要的C#代码。

不要指望能够自动选择设备。你需要一个配置选项来允许用户选择端口。您可以显示您从查询中获得的信息,以帮助她选择正确的信息。或者让她拔下设备并重新插入,添加的COM端口应该是正确的。

+0

谢谢,那正是我所做的。一个简单的工具使用。 – user426118 2010-08-26 08:07:42

0

你将不得不在注册表中的某个地方看这件事。

我只能假设这是一个FTDI芯片。如果是这样,您可以通过使用其驱动程序附带的公共API获取信息。

如果没有其他答案,我将在家中检查晚些时候,因为我的JTAG调试器具有相同的芯片。

更新:

这里是我的设备分配的COM端口的注册表项(PortName下)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_0483&PID_5740\498C54823932\Device Parameters 

我想你可以枚举通与usbser驱动程序的USB设备。

0

当我遇到同样的问题(RFID阅读器)时,我检查了每个端口是否有任何数据。 可能它会在COM4:COM9中出现。 我知道这不是最好的解决方案,但我用它在移动设备上,我确信我的COM连接...

也许在您的驱动程序的* .ini文件中有一些关于COM编号的信息。

+1

Windows分配一个未使用的COM端口,它与.inf文件无关。 – leppie 2010-08-24 12:39:45

0

如果您为USB < - >串行转换使用基于FTDI的解决方案,则可以使用FTDI网站提供的FT_PROG实用程序将自定义VID:PID对分配给转换器,然后您可以查询以确定哪个适配器分配给哪个虚拟端口。

或者,你可以使用FTDIChip-ID这是每个芯片固有的,在这其中包括代码示例细节都设在这里:http://ftdichip.com/Support/SoftwareExamples/FTDIChip-ID.htm

1

我们解决了针对不同应用此不同的方式。我们对一个实例使用了显式配置,在这个实例中我们只有一个特定类型的设备,但是不清楚在系统配置之前它将分配哪个COM端口。在另一种情况下,我们有一根USB电缆通过一组转换器插入集线器,因此我们探测了所有可以成功打开的COM端口以查找感兴趣的设备。

在Windows环境中使用USB /串口转换器时会出现一些警告 - 如果您的设备类似GPS设备,每当它打开电源时都会发出数据,Windows可能会在启动过程中将其检测为旧串行鼠标。另外,插入不同的USB端口可能会咀嚼额外的COM端口号(以及破坏您所做的任何显式配置)。