在C#中发现串口

时间:2011-12-24 10:48:05

标签: c# .net usb registry serial-port

我正在编写一个通过向USB端口发送字节进行通信的应用程序。我想允许用户选择端口并执行此操作,我使用SerialPort.GetPortNames()。不幸的是,它返回一个空数组。假设该方法读取数据的注册表(HKEY_LOCAL_MACHINE \ HARDWARE \ DEVICEMAP \ SERIALCOMM),但缺少SERIALCOMM目录。当我在Linux上运行程序时,它会按预期列出我的四个USB端口。如何以不同的方式修复注册表/发现端口?

3 个答案:

答案 0 :(得分:2)

您可以使用管理对象查询可用的COM端口。有趣的表格是:

您可以在WMI Code Creator中探索这些命名空间,并生成VBScript / VB / C#代码。

答案 1 :(得分:1)

SerialPort.GetPortNames()是发现串行端口的正确方法。但是,如果您使用的是Windows 7,我认为这可能是此方法列出的注册表项权限问题。我在Microsoft.com找到了一篇描述此问题的帖子。

答案 2 :(得分:1)

SerialPort.GetPortNames()返回计算机上安装的COM端口列表,而不是USB端口。我不认为Windows会为您提供USB端口列表,只提供可用的USB设备。

尽管名称为“通用串行总线”,但它们并非“传统意义上的串行端口”。