簡體   English   中英

如何在.NET中使用其驅動程序名稱查找串行端口設備?

[英]How to find a Serial port device in .NET with its driver name?

我有一台通過串行端口連接到計算機的設備。 我知道在.NET中打開端口,我可以通過COM號碼來調用該端口。 例如

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

調用COM9上的設備。 但是,如果我在其他計算機上運行程序和串行端口設備,則可以更改端口號,但是每台計算機上的設備名稱始終相同。 例如,在此圖片中,無論COM端口號如何,我都希望與“ Numato Lab 8通道USB中繼模塊”進行通信(名稱始終與端口號相同)。

在此處輸入圖片說明

問題是:是否仍然可以使用上面在設備管理器中顯示的名稱而不是其端口號來代替上面的代碼來調用我的設備? 喜歡

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

您必須訪問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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM