C#自動搜尋符合特徵的串列埠號
阿新 • • 發佈:2019-01-05
業務場景:在開發需要用到USB轉串列埠的裝置的時候,每次和電腦連線,COM名稱都可能會改變。解決辦法:最容易想起來的辦法是把串列埠號寫在配置檔案中(或讓使用者在UI上選擇),這樣實際操作起來還是有些繁瑣,下面我要介紹的是從CodeProject上看到的一篇文章,可以自動根據串列埠裝置的某些特徵來自動搜尋特定的串列埠裝置。
舉例來說,根據串列埠的路徑裡是否包含“FDTIBUS”來判斷是不是我要找的裝置,是的話就打印出來。程式碼如下:
using System; using System.Management; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { try { var searcher = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSSerial_PortName"); foreach (ManagementObject queryObj in searcher.Get()) { if (queryObj["InstanceName"].ToString().Contains("FTDIBUS")) { Console.WriteLine(queryObj["PortName"] + " is a FDTIBUS device." ); } } Console.Read(); } catch (ManagementException e) { System.Diagnostics.Debug.WriteLine("An error occurred while querying for WMI data: " + e.Message); } } } }
你在實際用的時候可以通過除錯,來檢視ManagementObject中你關心的屬性,並作出相應的判斷。