我有一个通过串口连接到计算机的设备。我理解在.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");
答案 0 :(得分:3)
您必须访问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
课程以了解设备连接的端口。我把它留给你调查。
如果您想自己完成所有工作,那么您有一个很大的解释: