“路漫漫其修遠兮,吾將上下而求索” , -----------------------WHAPPY
目標任務:
1 從本地設備列表獲取串口。
RegistryKey keyCom = Registry.LocalMachine.OpenSubKey(@"Hardware\DeviceMap\SerialComm");
?
RegistryKey
?是.NET 框架中用于表示注冊表項的類,通過它可以對注冊表進行讀取、寫入等操作。?
Registry.LocalMachine
?表示要訪問的注冊表根項為?HKEY_LOCAL_MACHINE
,它包含了計算機的系統配置信息,適用于所有用戶。?
.OpenSubKey
?是?RegistryKey
?類的一個方法,用于打開指定路徑的子項。這里傳入的參數?@"Hardware\DeviceMap\SerialComm"
?是一個字符串,表示注冊表中的路徑,該路徑下存儲著系統中已安裝的串口設備的相關映射信息。整行代碼的功能是嘗試打開?
HKEY_LOCAL_MACHINE\Hardware\DeviceMap\SerialComm
?這個注冊表子項,并將表示該子項的?RegistryKey
?對象賦值給?keyCom
?變量,后續可通過這個變量來讀取系統中已配置的串口信息,比如獲取可用的串口號等。
?foreach (var sValue in sSubKeys) {string portName = (string)keyCom.GetValue(sValue);port_cbb.Items.Add(portName); }
?
foreach
?循環:
foreach (var sValue in sSubKeys)
?這行代碼開啟了一個?foreach
?循環。sSubKeys
?應該是一個集合(例如?IEnumerable<string>
?類型的集合等),foreach
?循環會依次遍歷?sSubKeys
?集合中的每一個元素,并將當前遍歷到的元素賦值給?sValue
?變量。這里使用?var
?關鍵字讓編譯器自動推斷?sValue
?的類型,在這種上下文中,sValue
?很可能是?string
?類型。獲取注冊表值:
string portName = (string)keyCom.GetValue(sValue);
?這行代碼從注冊表項對象?keyCom
(之前通過?Registry.LocalMachine.OpenSubKey(@"Hardware\DeviceMap\SerialComm");
?打開的注冊表項)中獲取值。GetValue
?方法接受一個參數?sValue
,這個參數應該是注冊表項中的某個值的名稱(鍵名)。GetValue
?方法返回對應的值,由于從注冊表中獲取的值類型可能是?object
?類型,這里通過?(string)
?進行強制類型轉換,將獲取到的值轉換為?string
?類型,并賦值給?portName
?變量。添加到控件項集合:
port_cbb.Items.Add(portName);
?這行代碼將獲取到的串口名稱?portName
?添加到名為?port_cbb
?的控件(很可能是?ComboBox
?控件)的?Items
?集合中。這樣,在界面上顯示?port_cbb
?控件時,就會包含從注冊表中讀取到的串口名稱選項,用戶可以從這些選項中選擇需要的串口。總的來說,這段代碼的作用是遍歷注冊表項中某個集合(
sSubKeys
)里的鍵名,獲取對應鍵的值(串口名稱),并將這些串口名稱添加到一個控件(port_cbb
)的選項列表中,以便用戶在界面上選擇串口。
RegistryKey keyCom = Registry.LocalMachine.OpenSubKey(@"Hardware\DeviceMap\SerialComm");
string[] sSubKeys = keyCom.GetValueNames();
Port_cbb.Items.Clear();foreach (string sValue in sSubKeys)
{string portName = (string)keyCom.GetValue(sValue);Port_cbb.Items.Add(portName);
}
2 串口數據的發送。
3 串口數據的接收。
4.現象
未完待續》》》》》》》》》》》》》》