我正在编写一个通过向 USB 端口发送字节进行通信的应用程序。我希望允许用户选择端口,为此,我使用 SerialPort.GetPortNames()
。不幸的是,它返回一个空数组。该方法据称会读取注册表中的数据(HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM),但 SERIALCOMM 目录丢失。当我在 Linux 上运行该程序时,它会按预期列出我的四个 USB 端口。如何以不同的方式修复注册表/发现端口?
最佳答案
您可以使用管理对象来查询可用的 COM 端口。有趣的表格是:
- MSSerial_PortName在根目录\WMI
- MSWmi_PnPInstanceNames在根目录\WMI
- Win32_PnPEntity在根目录\CIMV2
您可以在 WMI Code Creator 中探索这些命名空间,并生成VBScript/VB/C#代码。
关于c# - 在 C# 中发现串行端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8624041/