我有一个通过串口连接到计算机的设备。我知道在.NET中打开端口,我可以通过COM号调用端口。例如
SerialPort s = new SerialPort("COM9");
s.Open();
在COM9上调用该设备。但是,如果我在另一个计算机端口号上运行我的程序和串口设备,那么设备的名称在每台计算机上都是相同的。例如,在这张图片中,我想与"Numato Lab 8 Channel USB中继模块“通信,而不考虑COM端口号(名称总是与端口号相同)。
的问题是:不管怎么说,我用设备管理器中所示的名称而不是端口号来称呼我的设备,而不是上面的代码吗?喜欢
SerialPort s = new SerialPort("Numato Lab 8 Channel USB Relay Module");
发布于 2018-06-11 20:45:15
你必须访问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://stackoverflow.com/questions/50805563
复制相似问题