1. 程式人生 > >C#自動搜尋符合特徵的串列埠號

C#自動搜尋符合特徵的串列埠號

           業務場景:在開發需要用到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中你關心的屬性,並作出相應的判斷。