1. 本来想直接用Settings来获取的,但是串口信息类似 "\Device\Serial0",死活获取不了,用了转义、反斜杠还是获取不到,所以就放弃了,网上好像也没有获取成功的。
  2. 所以就用winapi来获取了,参考了网上源码
  3. cpp文件
  4. /*
  5. 初始化串口
  6. */
  7. void MainWindow::init_comm()
  8. {
  9. QString path = "HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM";
  10. QSettings *settings = new QSettings(path, QSettings::NativeFormat);
  11. QStringList key = settings->allKeys();
  12. QStringList comlist ;
  13. QStringList Baudlist ;
  14. //    QStringList Paritylist ;
  15. //    QStringList DataBitslist;
  16. //    QStringList StopBitslist;
  17. //    QStringList ControlFlowlist;
  18. comlist.clear();
  19. /* 取串口名 */
  20. for (int i=0; i<key.size(); i++) {
  21. comlist << getcomm(i, "value");
  22. }
  23. ui->ComPortcomboBox->addItems(comlist);
  24. ....
  25. }
  26. /*
  27. 读取键值
  28. */
  29. QString MainWindow::getcomm(int index, QString keyorvalue)
  30. {
  31. QString commresult;
  32. if (::RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("HARDWARE\\DEVICEMAP\\SERIALCOMM"), 0, KEY_READ, &hKey) != 0) {
  33. QString error="Cannot open regedit!";//无法打开注册表时返回error
  34. return error;
  35. }//if(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,subkey,0,KEY_READ,&hKey)!=0)
  36. QString keymessage;//键名
  37. QString message;
  38. QString valuemessage;//键值
  39. indexnum = index;//要读取键值的索引号
  40. keysize = sizeof(keyname);
  41. valuesize = sizeof(keyvalue);
  42. if (RegEnumValue(hKey, indexnum, keyname, &keysize, 0, &type, (BYTE*)keyvalue, &valuesize) == 0) { //列举键名和值
  43. for (int i=0; i<(int)keysize; i++) {
  44. message = keyname[i];
  45. keymessage.append(message);
  46. }
  47. for (int j=0; j<(int)valuesize; j++) {
  48. if (keyvalue[j] != 0x00) {
  49. valuemessage.append(keyvalue[j]);
  50. }
  51. }
  52. if (keyorvalue == "key") {
  53. commresult = keymessage;
  54. }
  55. if (keyorvalue == "value") {
  56. commresult=valuemessage;
  57. }
  58. } else {
  59. commresult = "nokey";
  60. }
  61. RegCloseKey(hKey);//关闭注册表
  62. return commresult;
  63. }


  1. .h文件
  2. #include <QSettings>
  3. #include <qt_windows.h>
  4. HKEY hKey;
  5. LPCWSTR subkey;
  6. wchar_t keyname[256]; //键名数组
  7. char keyvalue[256];  //键值数组
  8. DWORD keysize,type,valuesize;
  9. int indexnum;

http://blog.csdn.net/emdfans/article/details/38588537

QT 自动获取可用串口的更多相关文章

  1. Qt5获取可用串口

    概述 本文将介绍Qt5使用类QSerialPortInfo获取可以用串口号 效果 机器上配置的虚拟串口 程序获取结果 源码开始 .pro文件中添加下面的代码 QT += serialport 然后,执 ...

  2. c++之Linux获取可用串口

    1.关于 这份代码来自: stackoverflow 2. 测试 2.1 测试环境: vmware + ubuntu, vmware添加串口(虚拟机关机后再添加) 2.2 测试输出 3. 源码 #in ...

  3. delphi 自动获取串口

    delphi 自动获取串口   https://blog.csdn.net/Nevermore_anger/article/details/79012875    版权声明:本文为博主原创文章,未经博 ...

  4. 机房ping监控 smokeping+prometheus+grafana(续) 自动获取各省省会可用IP

    一.前言 1.之前的文章中介绍了如何使用smokeping监控全国各省的网络情况:https://www.cnblogs.com/MrVolleyball/p/10062231.html 2.由于之前 ...

  5. Qt小项目之串口助手控制LED

    Qt小项目之串口助手控制LED 前言 最近刚学了一点Qt开发上位机,尝试着做个小软件练练手.查找了很多资料,做了一个简单的串口助手,可以实现串口基本发送和接收功能,支持中文显示,还可以控制STM32开 ...

  6. 转载-centos网络配置(手动设置,自动获取)的2种方法

    转载地址:http://blog.51yip.com/linux/1120.html 重新启动网络配置 # service network restart 或 # /etc/init.d/networ ...

  7. 在qt下获取屏幕分辨率

    1,在Windows下可以使用 GetSystemMetrics(SM_CXSCREEN);GetSystemMetrics(SM_CYSCREEN) 获取.   2,在Linux下可以使用XDisp ...

  8. centos网络配置方法(手动设置,自动获取)

    不知道为什么最近一段时间网络特别的慢,还老是断,断的时候,局域网都连不上,当我手动设置一下ip后就可以了,搞得我很无语.下面是2种设置网络连接的方法,在说怎么设置前,一定要做好备份工作,特别是对于新手 ...

  9. C++解析头文件-Qt自动生成信号声明

    目录 一.瞎白话 二.背景 三.思路分析 四.代码讲解 1.类图 2.内存结构声明 3.QtHeaderDescription 4.私有函数讲解 五.分析结果 六.下载 一.瞎白话 时间过的ZTMK, ...

随机推荐

  1. Kettle 连接失败 Oracle 数据库报 ora-12505 的解决方法(转)

    用kettle新建DB连接的时候总是报错,可是用plsql连接是可以连上,错误信息大致如下: 错误连接数据库 [MIS] : org.pentaho.di.core.exception.KettleD ...

  2. Nanjing GDG Meetup 10月19日线下活动

     Nanjing GDG 10 月份的线下活动将在本周六 (10/19) 举办,这次会请到对所有开发者都有重要帮助的神器 GoAgent 的作者 Phus Lu 来给我们做一场分享,热烈欢迎大家报名参 ...

  3. 容易被误解的overflow:hidden

    http://www.ofcss.com/2011/03/20/misunderstood-of-overflow-hidden.html(转) 容易被误解的overflow:hidden 15条评论 ...

  4. glib源码安装使用方法

    glib库是GTK+和GNOME工程的基础底层核心程序库,是一个综合用途的实用的轻量级的C程序库,它提供C语言的常用的数据结构的定义.相关的处理函数,有趣而实用的宏,可移植的封装和一些运行时机能,如事 ...

  5. U盘检测软件:ChipGenius,MyDiskTest

    几年前的事情了.有一次去北邮玩,看到校园里有卖U盘的摊位,问了问价格,8GB的金士顿U盘99块钱.正好头一天有个同事跟我说最近U盘降价了,8GB才99,于是心里一痒痒就买了一个.回来用着就感觉不对劲, ...

  6. 2015 8月之后"云计算"学习计划

    1. 自己在家搭建openstack,使用RDO搭建自己的openstack环境,不必源码方式搭建,只要搭建起来就好,越快越好 --以RDO方式,搭建一个all-in-one的主机,只需要租一台虚拟机 ...

  7. Q_D宏

    Qt 源码中有很多Q_Q和Q_D宏,使用这些宏的地方总会看到有q指针和d指针,查了查KDE文档,大体搞清了其中的机理,欧也!Qt的这些私有数据访问策略还是挺值得借鉴.下面就简单总结一下. 访问器 , ...

  8. linux系统CPU,内存,磁盘,网络流量监控脚本

    前序 1,#cat /proc/stat/ 信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2,#vmstat –s 或者#vmstat 虚拟内存统计 3, #cat ...

  9. Min Stack (LeetCode) tweak it to avoid Memory Limit Exceeded

    class MinStack { public: void push(int x) { if(values.empty()) { values.push_back(x); min_indices.pu ...

  10. Hibernate 配置详解(12) 补充

    hibernate.hbm2ddl.import_files_sql_extractor 这个配置项用于补充这篇文章: http://blog.csdn.net/stefwu/article/deta ...