1. 程式人生 > >C#獲取windows串列埠號對應的串列埠(裝置)名稱

C#獲取windows串列埠號對應的串列埠(裝置)名稱

1、情境:

做專案的時候要開啟串列埠然後進行一些庫函式的呼叫來操作目標板。串列埠使用的是usb轉串列埠,板子插進拔出的,每次都使用不一樣的usb口,debug的時候懶得每次改com口,又不想在UI上加上一個選擇

com口的combox,於是就使用了下面這個方法。

2、環境:

win7 64、vs2010

3、目標:

獲取下圖的裝置到底使用的是com幾。

4、source codery>

複製程式碼
  1         /// <summary>
  2         /// Get the target com num.
  3         /// </summary>
4 /// <returns></returns> 5 public static int GetComNum() 6 { 7 int comNum = -1; 8 string[] strArr = GetHarewareInfo(HardwareEnum.Win32_PnPEntity, "Name"); 9 foreach (string s in strArr) 10 { 11 Debug.WriteLine(s);
12 13 if (s.Length >= 23 && s.Contains("CH340")) 14 { 15 int start = s.IndexOf("(") + 3; 16 int end = s.IndexOf(")"); 17 comNum = Convert.ToInt32(s.Substring(start + 1, end - start - 1)); 18
} 19 } 20 21 return comNum; 22 23 } 24 25 /// <summary> 26 /// Get the system devices information with windows api. 27 /// </summary> 28 /// <param name="hardType">Device type.</param> 29 /// <param name="propKey">the property of the device.</param> 30 /// <returns></returns> 31 private static string[] GetHarewareInfo(HardwareEnum hardType, string propKey) 32 { 33 34 List<string> strs = new List<string>(); 35 try 36 { 37 using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from " + hardType)) 38 { 39 var hardInfos = searcher.Get(); 40 foreach (var hardInfo in hardInfos) 41 { 42 if (hardInfo.Properties[propKey].Value != null) 43 { 44 String str = hardInfo.Properties[propKey].Value.ToString(); 45 strs.Add(str); 46 } 47 48 } 49 } 50 return strs.ToArray(); 51 } 52 catch 53 { 54 return null; 55 } 56 finally 57 { 58 strs = null; 59 } 60 }//end of func GetHarewareInfo(). 61 62 /// <summary> 63 /// 列舉win32 api 64 /// </summary> 65 public enum HardwareEnum 66 { 67 // 硬體 68 Win32_Processor, // CPU 處理器 69 Win32_PhysicalMemory, // 實體記憶體條 70 Win32_Keyboard, // 鍵盤 71 Win32_PointingDevice, // 點輸入裝置,包括滑鼠。 72 Win32_FloppyDrive, // 軟盤驅動器 73 Win32_DiskDrive, // 硬碟驅動器 74 Win32_CDROMDrive, // 光碟驅動器 75 Win32_BaseBoard, // 主機板 76 Win32_BIOS, // BIOS 晶片 77 Win32_ParallelPort, // 並口 78 Win32_SerialPort, // 串列埠 79 Win32_SerialPortConfiguration, // 串列埠配置 80 Win32_SoundDevice, // 多媒體設定,一般指音效卡。 81 Win32_SystemSlot, // 主機板插槽 (ISA & PCI & AGP) 82 Win32_USBController, // USB 控制器 83 Win32_NetworkAdapter, // 網路介面卡 84 Win32_NetworkAdapterConfiguration, // 網路介面卡設定 85 Win32_Printer, // 印表機 86 Win32_PrinterConfiguration, // 印表機設定 87 Win32_PrintJob, // 印表機任務 88 Win32_TCPIPPrinterPort, // 印表機埠 89 Win32_POTSModem, // MODEM 90 Win32_POTSModemToSerialPort, // MODEM 埠 91 Win32_DesktopMonitor, // 顯示器 92 Win32_DisplayConfiguration, // 顯示卡 93 Win32_DisplayControllerConfiguration, // 顯示卡設定 94 Win32_VideoController, // 顯示卡細節。 95 Win32_VideoSettings, // 顯示卡支援的顯示模式。 96 97 // 作業系統 98 Win32_TimeZone, // 時區 99 Win32_SystemDriver, // 驅動程式 100 Win32_DiskPartition, // 磁碟分割槽 101 Win32_LogicalDisk, // 邏輯磁碟 102 Win32_LogicalDiskToPartition, // 邏輯磁碟所在分割槽及始末位置。 103 Win32_LogicalMemoryConfiguration, // 邏輯記憶體配置 104 Win32_PageFile, // 系統頁檔案資訊 105 Win32_PageFileSetting, // 頁檔案設定 106 Win32_BootConfiguration, // 系統啟動配置 107 Win32_ComputerSystem, // 計算機資訊簡要 108 Win32_OperatingSystem, // 作業系統資訊 109 Win32_StartupCommand, // 系統自動啟動程式 110 Win32_Service, // 系統安裝的服務 111 Win32_Group, // 系統管理組 112 Win32_GroupUser, // 系統組帳號 113 Win32_UserAccount, // 使用者帳號 114 Win32_Process, // 系統程序 115 Win32_Thread, // 系統執行緒 116 Win32_Share, // 共享 117 Win32_NetworkClient, // 已安裝的網路客戶端 118 Win32_NetworkProtocol, // 已安裝的網路協議 119 Win32_PnPEntity,//all device 120 }
複製程式碼

6、結果:

正確獲得對應的com口號,達到了隨便插哪個口程式都可以跑的目的。


相關推薦

C#獲取windows串列對應串列(裝置)名稱

1、情境: 做專案的時候要開啟串列埠然後進行一些庫函式的呼叫來操作目標板。串列埠使用的是usb轉串列埠,板子插進拔出的,每次都使用不一樣的usb口,debug的時候懶得每次改com口,又不想在UI上加上一個選擇 com口的combox,於是就使用了下面這個方法。

C#獲取WIndows版本截止至Windows2003Server版本

//引用空間using System;//獲取作業系統版本函式public string GetCurrentOSVersion()  {   //Windows作業系統版本號組成部分:主版本號.次版本號.內部版本號.修訂版本號   string tempOSVersion=

C# 獲取json中某key對應的值,支援迭代

/// <summary> /// 從json中獲取對應key的value值 /// </summary> /// <param name="json字串"></param>

c++獲取Windows“我的文件”路徑

https://stackoverflow.com/questions/2414828/get-path-to-my-documents #include <windows.h> #include <iostream> #include <shlobj.h&

C/C++獲取Windows系統CPU和記憶體及硬碟使用情況

//1.獲取Windows系統記憶體使用率 //windows 記憶體 使用率 DWORD getWin_MemUsage(){ MEMORYSTATUS ms; ::GlobalMemoryStatus(&ms); return ms.dwMemoryLo

C# 獲取Windows系統:Cpu使用率,記憶體使用率,Mac地址,磁碟使用率

一、獲取CPU使用率: #region 獲取CPU使用率         #region AIP宣告          [DllImport("IpHlpApi.dll")]     &n

獲取Windows系統版本

前言 由於前段時間比較忙,一直沒有來跟大家分享交流技術,實在是抱歉,往後我會不定時跟大家分享一些C++技術。 廢話 有些東西看似簡單,但坑多著呢,所以大家還是要多親自嘗試,不要眼高手低。 核心程式碼 //讀取作業系統的名稱 string GetSystemName() {

.NET獲取windows域帳

string DomainName = System.Environment.UserDomainName;         //域名或IPstring AccountName = System.En

C# 獲取Windows版本及IE版本

//C#判斷作業系統是否為Windows98 public static bool IsWindows98 { get { return (Environment.OSVersion.Platform == PlatformID.Win3

C++獲取windows桌面的路徑

WINSHELLAPI HRESULT WINAPI SHGetSpecialFolderLocation (HWND hwndOwner, int nFolder,LPITEMIDLIST * ppidl); //函式宣告 hwndOwner: 指定了”所有

Mac下使用終端檢視某個對應的程序和殺死程序

檢視埠號對應的程序 開啟終端,輸入lsof -i tcp:port,port即為埠號,如5037 如果埠號未被佔用,回車之後結果如圖: 如果埠號被佔用,則會出現佔用該埠號的程序和程序的id,舉個例子: 這樣我們就可以根據程序id來殺死程序了。

c\c++獲取Windows的使用者數量,使用者資訊

有些時候我們需要獲取Windows下工作管理員的使用者數量,使用者的資訊,如下圖的這時我們就沒法直接用Windows提供的介面直接獲取了,但無法用介面怎麼辦呢?我們可以用執行使用者命令的方式(cmd執行的命令)獲取,好,多的不說了,直接上程式碼。 #include <

C++獲取電腦上連接的多個攝像頭名稱與編號

return 運行 cat coin 編號 ase system void bstr #include<iostream>#include "strmif.h"#include <initguid.h>#include<vector>#i

C# 獲取有掩碼的銀行賬號/手機號/名稱

獲取有掩碼的銀行賬號,程式碼如下: public static string GetMaskBankAccount(string bankAccount) { if (!string.IsNullOrWhiteSpace(bankAccount)) {

Linux下檢視程序ID,根據程序ID檢視佔用的,根據檢視佔用的程序

1、ps 檢視系統中正在執行的程序,具體引數如下 ps:---檢視系統當中所有正在執行的程序 ps aus #檢視系統中的所有程序,使用BSD作業系統格式 ps -le #檢視系統中所有程序,使用Linux標準命令格式 兩組選項可記任意一種 作用都是列出系統下所有程序 選

centos6+如何對外開放80,3306或者其他

1.檢視防火牆對外開放了哪些埠 [[email protected] ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination AC

WebLogic中修改和省略的做法

一、修改埠號 方法一:通過console進入,servers—>點選需要修改埠號的Server—>修改Listen Port項。 方法二:修改bea\user_projects\domains\base_domain\config\config.xml。 初始 <server><

C# CultureInfo 類之各國語言所對應的的區域性名稱

CultureInfo 類儲存區域性特定的資訊,如關聯的語言、子語言、國家/地區、日曆和區域性約定。此類還提供對 DateTimeFormatInfo、NumberFormatInfo、CompareInfo 和 TextInfo 的區域性特定例項的訪問。這些物件包含區域性特定操作(如大小寫、格

linux mysql 檢視預設和修改

如何檢視mysql 預設埠號和修改埠號 2015-03-19 17:42:18 1. 登入mysql [[email protected] /]# mysql -u root -p

修改tomcat(tomcat與其他應用衝突)

在Tomcat的conf資料夾裡有個server.xml檔案,修改裡面的  <Connector port="8080" protocol="HTTP/1.1"                connectionTimeout="20000"