我正在编写一个通过向USB端口发送字节进行通信的应用程序。我想允许用户选择端口并执行此操作,我使用SerialPort.GetPortNames()
。不幸的是,它返回一个空数组。假设该方法读取数据的注册表(HKEY_LOCAL_MACHINE \ HARDWARE \ DEVICEMAP \ SERIALCOMM),但缺少SERIALCOMM目录。当我在Linux上运行程序时,它会按预期列出我的四个USB端口。如何以不同的方式修复注册表/发现端口?
答案 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设备。
尽管名称为“通用串行总线”,但它们并非“传统意义上的串行端口”。