日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

串口编程-枚举遍历串口、获取PC所有串口名称、遍历注册表项、RegEnumValue用法

發布時間:2025/3/12 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 串口编程-枚举遍历串口、获取PC所有串口名称、遍历注册表项、RegEnumValue用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在網上找了幾個關于遍歷串口的例子,要么代碼不完整,要么就有Bug,如讀不了串口號大于10以上的。?
經過本人的整理,現分享最終代碼,vs2008下編譯通過。?

//此方法同樣適用于遍歷windows開機啟動項,只需稍加修改即可.?

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 void CEnumPortDlg::enumPort(void) { HKEY hKey; LPCTSTR lpSubKey="HARDWARE\\DEVICEMAP\\SERIALCOMM\\"; if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpSubKey, 0, KEY_READ, &hKey)!= ERROR_SUCCESS) { ??return ; } #define NAME_LEN 100 char szValueName[NAME_LEN]; BYTE szPortName[NAME_LEN]; LONG status; DWORD dwIndex = 0; DWORD dwSizeValueName=100; DWORD dwSizeofPortName=100; DWORD Type; dwSizeValueName = NAME_LEN; dwSizeofPortName = NAME_LEN; do { ??status = RegEnumValue(hKey, dwIndex++, szValueName, &dwSizeValueName, NULL, &Type, ???szPortName, &dwSizeofPortName); ??if((status == ERROR_SUCCESS)) ??{ ???m_lstPort.AddString((char *)szPortName); ???? ??} ??//每讀取一次dwSizeValueName和dwSizeofPortName都會被修改 ??//注意一定要重置,否則會出現很離奇的錯誤,本人就試過因沒有重置,出現讀不了COM大于10以上的串口 ??dwSizeValueName = NAME_LEN; ??dwSizeofPortName = NAME_LEN; } while((status!= ERROR_NO_MORE_ITEMS)); RegCloseKey(hKey); }

  

總結

以上是生活随笔為你收集整理的串口编程-枚举遍历串口、获取PC所有串口名称、遍历注册表项、RegEnumValue用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。