0
我有幾個由VCP連接的不同設備,我需要確定它們使用C#的端口。跟蹤目的也很重要。如果設備被拔出並重新插入或暫時斷電,有時COM端口將會改變。確定.net 3.5中VCP COM端口的最佳方法
我正在尋找一個可靠的方式來確定這一點。目前,我已經找到了最好的方法是使用PID來定位設備,並從設備名稱解析COM端口即
public static bool IsDevice (ManagementObject Device, string PID) {
try {
return new Regex (string.Format (@"USB\\VID_[^&]+&PID_{0}\\.*", PID)).IsMatch ((string) Device["DeviceID"]);
} catch (Exception) {
return false;
}
}
public static string GetVCP_COMPort (ManagementObject Device) {
try {
return new Regex (@".*\((COM[0-9]+)\).*").Match ((string) Device["Name"]).Groups[1].Value;
} catch (Exception e) {
return string.Empty;
}
}
...
var searcher = new ManagementObjectSearcher ("Select * from Win32_PnPEntity");
var coll = searcher.Get();
foreach (ManagementObject o in coll)
if (IsDevice (o, PID)) {
var port = new SerialPort (GetVCP_COMPort (o));
}
我用很舒服我找到設備的方法,例如IsDevice
,但從設備名稱解析COM端口看起來很容易出錯 - 如果設備沒有遵循Device Name (COMXY)
確切模式的名稱,很容易中斷。
有沒有更好的方法?