程式筆記
C#
C# 用 VID 和 PID 自動連線 serialport
K
kidneyweakx
April 28, 2020 (Updated: June 2, 2026)
原本 C# 的 serial port function官方範例 ,是類似這樣的
C#
streamport = new SerialPort("COM3", bauadrate);
這種方法每次開啟都還要再去跟改port相當的麻煩,所以就找了別人針對windows寫的function,再返回靜態的 port string 給SerialPort,效果相當好。
C#
// 有錯誤可能是你沒有 using Microsoft.Win32;或其他lib
public static List<string> ComPortNames(String VID, String PID)
{
// 讀取PID和VID
String pattern = String.Format("^VID_{0}.PID_{1}", VID, PID);
Regex _rx = new Regex(pattern, RegexOptions.IgnoreCase);
List<string> comports = new List<string>();
RegistryKey rk1 = Registry.LocalMachine;
RegistryKey rk2 = rk1.OpenSubKey("SYSTEM\\CurrentControlSet\\Enum");
foreach (String s3 in rk2.GetSubKeyNames())
{
RegistryKey rk3 = rk2.OpenSubKey(s3);
foreach (String s in rk3.GetSubKeyNames())
{
if (_rx.Match(s).Success)
{
RegistryKey rk4 = rk3.OpenSubKey(s);
foreach (String s2 in rk4.GetSubKeyNames())
{
RegistryKey rk5 = rk4.OpenSubKey(s2);
RegistryKey rk6 = rk5.OpenSubKey("Device Parameters");
comports.Add((string)rk6.GetValue("PortName"));
// 獲取port name,如有多個相同設備,加入comports array
}
}
}
}
return comports;
}
完整內容可參照下方連結😁
code來源
Related Articles
→
LOG-DC6
No File is an Island: Unraveling Swift Dependencies and Architecture
> 在 Swift 的世界中,我們習慣了強大的 Xcode 和簡潔的語法,但隨著專案規模的成長,一個隱形的怪獸會開始在程式碼中徘徊:那就是失控的依賴關係
[程式筆記][Swift]
@kidneyweakx→
LOG-FE5
Saved by the Logs: How to Recover a Forgotten Keystore Password via IDE Build Logs.
> 最遙遠的距離,是密碼就在 IDE 裡但我看不見
[程式筆記][Android]
@kidneyweakx→
LOG-912
Hexo 升級 V5 排除疑難雜症
> 因為剛好把電腦重灌,然後這個 blog 就躺在D槽等著我幫他換新的環境,然後他就被我快樂的升級了。 hexo 更新 v5.0 hexo 更新到 V5 的步驟相當容易 就可以自動更新了,但是版本大更新,往往都會附帶一些小問題,像他就給我了幾個warning 更新後 Error 解決方法 修改\ config.yml的部分成新版的,原始external\ link只有true的選項,更新後可決定是否開...
[程式筆記][Javascript][hexo]
@kidneyweakx