C# 過濾SerialPort端口


C#中的SerialPort類只能通過SerialPort.GetPortNames()來獲取端口名字,而且出來都是COM+數字的字樣,如果我要識別COM端口是什么設備的,它就無能為力了,此時我們可以使用ManagementObjectSearcher獲取所有COM&LPT的port,然后根據名字或者description來識別端口:

 

try
            {
                //{4d36e978-e325-11ce-bfc1-08002be10318}為設備類別port(端口(COM&LPT))的GUID
                ManagementObjectSearcher searcher = new ManagementObjectSearcher(
                                                        "root\\CIMV2",
                    "SELECT * FROM Win32_PnPEntity WHERE ClassGuid=\"{4d36e978-e325-11ce-bfc1-08002be10318}\""
                                                        );
                foreach (ManagementObject queryObj in searcher.Get())
                {
                    string name = queryObj.GetPropertyValue("Name").ToString();
                    string desc = queryObj.GetPropertyValue("Description").ToString();
                   
                }
            }
            catch (Exception ex)
            {
                //Log.w
            }

如果事先知道某類port的名字特征,如知道Description為“abc”,就可以把ManagementObjectSearcher的第二個參數改為:

            try
            {
                //{4d36e978-e325-11ce-bfc1-08002be10318}為設備類別port(端口(COM&LPT))的GUID
                ManagementObjectSearcher searcher = new ManagementObjectSearcher(
                                                        "root\\CIMV2",
                                                        "SELECT * FROM Win32_PnPEntity WHERE Name LIKE '%abc%'"
                                                        );
                foreach (ManagementObject queryObj in searcher.Get())
                {
                    string name = queryObj.GetPropertyValue("Name").ToString();
                    string desc = queryObj.GetPropertyValue("Description").ToString();
                }
            }
            catch (Exception ex)
            {
                //Log.w
            }

這樣就不需要過濾了。

 

google了半天,有用win32_serialport的,但是不知道問為啥,有些端口識別不出來。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM