【问题标题】:How to find a Serial port device in .NET with its driver name?如何在 .NET 中使用其驱动程序名称查找串行端口设备?
【发布时间】:2018-11-21 03:59:39
【问题描述】:

我有一个通过串口连接到计算机的设备。我知道在 .NET 中打开端口我可以通过 COM 号调用端口。例如

SerialPort s = new SerialPort("COM9");
s.Open();

在 COM9 上调用设备。但是,如果我在另一台计算机上运行我的程序和串行端口设备,端口号可能会更改,但每台计算机上的设备名称始终相同。例如,在这张图片中,我想与“Numato Lab 8 通道 USB 继电器模块”通信,而不管 COM 端口号(名称始终与端口号相反)。

问题是: 无论如何,我用设备管理器中显示的名称而不是端口号来调用我的设备,而不是上面的代码?喜欢

SerialPort s = new SerialPort("Numato Lab 8 Channel USB Relay Module");

【问题讨论】:

标签: c# .net serial-port


【解决方案1】:

您必须访问 WMI 才能获取该信息。您可以使用ORMi 库方便访问:

只需创建一个类:

[WMIClass("Win32_PnPEntity")]
public class Device
{
    public string Caption { get; set;}
}

然后查询:

WMIHelper helper = new WMIHelper("root\\CimV2");

Device device = helper.Query<Device>().ToList().Where(p => p.Caption == "Numato Lab 8 Channel USB Relay Module").SingleOrDefault();

如果您想获取更多信息,请向Device 类添加更多属性。属性应符合 Win32_PnPEntity 类的 WMI 规范。

获得设备后,您可能还需要查询Win32_SerialPort 类以了解您的设备连接到哪个端口。我把它留给你调查。

如果您想自己完成所有工作,这里有一个详细的解释:

https://codereview.stackexchange.com/questions/111178/find-a-serial-port-device-through-wmi-windows-management-instrumentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-10
    • 2014-09-04
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    相关资源
    最近更新 更多