我在写一个通过向USB端口发送字节进行通信的应用程序。我想让用户选择端口并执行此操作,我使用SerialPort.GetPortNames()
。不幸的是,它返回一个空数组。该方法应该读取注册表中的数据(HKEY_LOCAL_MACHINE \ HARDWARE \ DEVICEMAP \ SERIALCOMM),但是SERIALCOMM目录缺失。当我在Linux上运行该程序时,它会按预期列出我的四个USB端口。如何修复注册表/以不同方式发现端口?在C#中发现串行端口
2
A
回答
1
SerialPort.GetPortNames()
是发现串口的正确方法。但是,如果您使用Windows 7,我认为这可能是该方法列出的注册表项权限问题。我在Microsoft.com找到了一篇描述这个问题的文章。
+0
我的确在使用Windows 7。但是当我以管理员身份打开注册表时,我仍然看不到该目录。 – 2011-12-24 12:10:38
+0
此外,该解决方案创建目录为空。 – 2011-12-24 12:34:53
1
SerialPort.GetPortNames()
返回安装在机器上的COM端口列表,而不是USB端口。我不认为Windows会为您提供USB端口列表,只有USB设备可用。
尽管名称为“通用串行总线”,但它们不是“串行端口”的常规含义。
1
您可以使用管理对象来查询可用的COM端口。有趣的表是:
- MSSerial_PortName根\ WMI
- MSWmi_PnPInstanceNames根\ WMI
- Win32_PnPEntity根\ CIMV2
您可以在WMI Code Creator探索这些命名空间,并生成的VBScript/VB/C#代码。
相关问题
- 1. C#串行端口通信
- 2. C++串行端口问题
- 3. C#串行端口超时
- 4. 发送和接收通过串行端口.txt文件在c#
- 5. C#端口转发
- 6. 写串行端口在Linux
- 7. 串行端口不发送空值
- 8. 发送,并通过串行端口
- 9. 串行端口DataReceived多次触发
- 10. Arduino和C#串行端口“崩溃”
- 11. C#串行端口的符号
- 12. 写入串行端口(C++/Windows)
- 13. C#只读串行端口数据来
- 14. C#串行端口通信问题
- 15. C#串行端口DATA读挂问题
- 16. Visual Studio - C# - 串行端口 - Mac
- 17. 串行端口投币编程C#
- 18. python串行端口
- 19. Ruby串行端口
- 20. 使用定时器将数据发送到串行端口C#
- 21. 在Perl中写入串行端口
- 22. 在Linux中的串行端口路由
- 23. 串行端口DataReceived事件只能在Compact Framework中触发
- 24. 在C#中读取串行端口引脚
- 25. 在c#中的串行端口的循环缓冲区#
- 26. 在C中访问USB或串行端口#
- 27. 在Visual C++中写入串行(Com)端口
- 28. 确定是否存在串行端口,Linux C/C++
- 29. 在Windows中使用C++进行UPnP端口转发
- 30. c#端口转发示例
简单的解释是你的机器根本没有任何串口。并非所有USB设备驱动程序都模拟一个串行端口。或者你可能有一个驱动程序安装不正确的设备。您可以使用控制面板+设备管理器仔细检查。询问您在superuser.com使用的特定设备的问题。 – 2011-12-24 14:57:31