C#實現(xiàn)獲取電腦中的端口號和硬件信息
我們經(jīng)常在使用一個串口軟件的時候,發(fā)現(xiàn)軟件中的端口號并不是普通的COM1,而是帶有硬件信息的。
那么如果我們使用C#編寫軟件時候,如何獲取到串口的硬件信息呢?
思路就是通過讀取設備管理器里的條目來實現(xiàn),我這里給大家封裝好了一個通用的方法。
/// <summary> /// 獲取可用端口號 /// </summary> /// <param name="usefullName">是否使用完全名稱</param> /// <returns>端口號集合</returns> public static string[] GetPortNames(bool usefullName = false) { List<string> result = new List<string>(); try { //搜索設備管理器中的所有條目 using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_PnPEntity")) { var hardInfos = searcher.Get(); foreach (var hardInfo in hardInfos) { if (hardInfo.Properties["Name"].Value != null) { string name = hardInfo.Properties["Name"].Value.ToString(); if (name.Contains("(COM") && name.EndsWith(")")) { if (usefullName) { result.Add(name); } else { //獲取端口號 string port = name.Substring(name.IndexOf('(') + 1, name.IndexOf(')') - name.IndexOf('(') - 1); //如果是虛擬串口 if (name.Contains("->")) { result.Add(port.Split(new string[] { "->"}, StringSplitOptions.None)[0]); } //如果不是虛擬串口 else { result.Add(port); } } } } } } } catch { result = new List<string>(); } return result.ToArray(); }
如果我們需要獲取帶硬件信息,那么usefullname傳入True即可。
string[] ports = GetPortNames(true); foreach (var item in ports) { Console.WriteLine(item); }
如果我們不需要獲取帶硬件信息的端口號集合,那么usefullname傳入False,默認參數(shù)是False,不填的話,就是False。
到此這篇關(guān)于C#實現(xiàn)獲取電腦中的端口號和硬件信息的文章就介紹到這了,更多相關(guān)C#獲取電腦信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Unity Shader實現(xiàn)新手引導遮罩鏤空效果
這篇文章主要為大家詳細介紹了Unity Shader實現(xiàn)新手引導遮罩鏤空效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-02-02深入理解C# abstract和virtual關(guān)鍵字
深入理解C# abstract和virtual關(guān)鍵字,學習c#的朋友可以參考下。2011-06-06WPF實現(xiàn)在控件上顯示Loading等待動畫的方法詳解
這篇文章主要介紹了WPF 如何在控件上顯示 Loading 等待動畫,文中的示例代碼講解詳細,對我們學習或工作有一定幫助,需要的可以參考一下2023-03-03采用easyui tree編寫簡單角色權(quán)限代碼的方法
本文主要介紹了如何采用easyui tree編寫簡單角色權(quán)限代碼,文章思路清晰,需要的朋友可以參考下2015-07-07