利用 Qt 4.1.0 读取注册表获得串口信息

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

利用 Qt 4.1.0 读取注册表获得串口信息是本文要介绍的内容,内容不多,用代码解决实际问题,先来看内容!前段时间做串口开发,想做自动扫描串口设备功能 遇到问题现在终于解决程序写得不是很好,功能实现了。按照此方法应该能够扫描到其他硬件。

我遇到的问题:

使用QSettings时 对于注册表串口信息中的 \Device\Serial0 这种key值 无法找到其value 是 \ 斜杠问题。

解决方法是 首先调用:

  1. QString path="HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM";  
  2. QSettings *settings=new QSettings(path,QSettings::NativeFormat);  
  3. QStringList key=settings->allKeys();  
  4. int num=(int)key.size(); 

得到注册表中有多少个串口设备

然后使用win api得到 key 和 value 程序源码如下:QString  getcomm(int index,QString keyorvalue)返回key  或者 value
                                                                                                                     
.h文件

  1. #ifndef READCOM_H  
  2. #define READCOM_H  
  3. #include <QMessageBox> 
  4. #include <qt_windows.h> 
  5. #include <QtGui/QMainWindow> 
  6. class Readcom  
  7. {  
  8. public:  
  9.     Readcom();  
  10.     ~Readcom();  
  11. private:      
  12.      HKEY hKey;  
  13.     LPCWSTR subkey;  
  14.     wchar_t keyname[256]; //键名数组  
  15.      char keyvalue[256];  //键值数组  
  16.      DWORD keysize,type,valuesize;  
  17.     int indexnum;  
  18. public:  
  19.      QString getcomm(int index,QString keyorvalue); //读取键名  
  20.      //QString getvalue(int index);//读取键值  
  21.     };  
  22. #endif // READCOM_H 

.cpp 文件

  1. #include "readcom.h"  
  2. Readcom::Readcom()      
  3. {  
  4. }  
  5. Readcom::~Readcom()  
  6. {  
  7. }  
  8. QString Readcom::getcomm(int index,QString keyorvalue)  
  9. {    
  10.     QString commresult="";  
  11.     QString strkey="HARDWARE\\DEVICEMAP\\SERIALCOMM";//子键路径  
  12.     subkey=strkey.ucs2();//类型转换  
  13.     if(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,subkey,0,KEY_READ,&hKey)!=0)  
  14.      {  
  15.          QString error="Cannot open regedit!";//无法打开注册表时返回error  
  16.          return error;  
  17.        }//if(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,subkey,0,KEY_READ,&hKey)!=0)  
  18.   QString keymessage="";//键名  
  19.   QString message="";  
  20.   QString valuemessage="";//键值  
  21.   indexindexnum=index;//要读取键值的索引号  
  22.     keysize=sizeof(keyname);  
  23.     valuesize=sizeof(keyvalue);  
  24.      if(::RegEnumValue(hKey,indexnum,keyname,&keysize,0,&type,(BYTE*)keyvalue,&valuesize)==0)//列举键名和值  
  25.       {      
  26.            for(int i=0;i<keysize;i++)      
  27.              {   
  28.                  message=keyname;  
  29.                  keymessage.append(message);  
  30.                }// for(int i=0;i<=keysize;i++)    读取键名  
  31.            for(int j=0;j<valuesize;j++)  
  32.                {  
  33.                  if(keyvalue[j]!=0x00)   
  34.                  { valuemessage.append(keyvalue[j]);}  
  35.                }//for(int j=0;j<valuesize;j++) 读取键值  
  36.            if(keyorvalue=="key")  
  37.              {  
  38.                commresult=keymessage;  
  39.              }  
  40.            if(keyorvalue=="value")  
  41.              {  
  42.                commresult=valuemessage;  
  43.              }  
  44.      }  
  45.      else  
  46.      {  
  47.          commresult="nokey";  
  48.      } //if(::RegEnumValue(hKey,indexnum,keyname,&keysize,0,&type,(BYTE*)keyvalue,&valuesize)==0) 列举键名和值  
  49.  
  50.   return commresult;  
  51. ::RegCloseKey(hKey);//关闭注册表  

小结:利用 Qt 4.1.0 读取注册表获得串口信息的内容介绍完了,希望本文对你有所帮助,更多内容请参考编辑推荐!

关于Qt4.8.5读注册表获取串口号的问题(解决无函数usc2的问题) Qt 4.8.5调用WinAPi读注册表获取串口号,解决无usc2()函数的问题,无法读取名称中含有"\","/"的问题 阅读详情

相关推荐

串口调试助手-QT

串口调试助手----------该程序使用Qt框架,C ++语言编译而成 项目文件介绍: main.cpp 该文件为该程序的入口程序 mainwindow.h 该文件为该程序的主要声明部分 mainwindow.cpp 该文件为该程序的主要定义部分 mainwindow.ui 该文件为该程序的ui界面设计 该文件中获取串口是通过读取Wind...

Liu Boqiang 博客 770

qt自动识别windows串口

windows中qt自动识别串口号程序,扫描windows注册表,非常好用。

Qt学习之使用QSetting类设置配置文件

1 引言 在做工程项目时,我们经常有些需要配置的参数,比如说串口的波特率、端口号、停止位、数据位等信息,使用QSetting类可以将一些我们需要的参数写入一个inc格式的配置文件,保存在计算机中,如果下次打开应用程序,就可以直接读取配置文件中的相关参数,另外,如果在程序运行过程中修改了配置参数,那么一定要更新配置文件中的内容。 接下来,我将设计一个简单的例子,配置文件中存储的是两个控制器的Kp、Ki、Kd参数。 2 准备工作 添加QSetting的头文件 #include <QSettings>

weixin_42411702的博客 5302

通过注册表实现串口热插拔

通过注册表实现串口热插拔,方法简单,嘿嘿,利用VS2005编译通过

Qt - C++ - QSerialPortInfo串口通信常用方法

这些方法可以用于获取和比较不同的串口信息,例如名称、描述、制造商等。可以使用这些方法来选择合适的串口设备或者识别特定的串口设备。注意,这些方法的返回值可能因操作系统和设备而异。

kygpa 2088

使用 Qt API 获取串口信息

Qt 中,可以使用类来获取串口信息。首先,确保你的 Qt 项目中包含了serialport模块。

公孙莫言的博客 1897

QT(2)----QT获取设备的串口信息

QT编写串口通信软件时需要用到 QSerialPortInfo  这个类,这个类可以获取到设备所有的串口信息 一,获取串口 使用QSerialPortInfo :: availablePorts();获取串口信息,它返回的是QList 类类型的 二,利用foreach来解析上面的信息 foreach(const QSerialPortInfo &portinfo,QSerialP

Eric_ 8438

qt获取串口列表

//获取串口列表 int snum=0; /*QList<QSerialPortInfo> list = QSerialPortInfo::availablePorts(); foreach (const QSerialPortInfo &serialport, list) { ui->cb_port->addItem(serialport.portName()); }*/ //用下面的方法会过滤掉一些无用的串口 .

我不是码农的博客~~~ 2100

qt 串口通信

#ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QtWidgets> #include <QSerialPort> #include <QSerialPortInfo> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget.

weixin_43246170的博客 1万+

【C++】Windows 读取注册表方法获取串口设备信息

文章目录前言代码在这里:使用查找注册表键值对得到串口设备列表 前言 这些名字是凭感觉取的,没有专门学过Windows API。以前用Qt读写串口 挺方便的,但是现在要不依赖于Qt读写串口,遇到查找串口的问题,所以操作了封装了一下。 代码在这里: github: git clone https://github.com/MisakaMikoto128/WinRegister.git 网盘:http://liuyuanlin.xyz:666/#s/6LnvBrVg 头文件 #pragma once #defi

林愿留的博客 3723

php 读取注册表,qt4.1.0  读取注册表得到 串口信息的方法!

前段时间做串口开发,想做自动扫描串口设备功能 遇到问题 现在终于解决 程序写得不是很好,功能实现了。按照此方法应该能够扫描到其他硬件。我遇到的问题:使用QSettings时 对于注册表串口信息中的 \Device\Serial0 这种key值 无法找到其value 是 \ 斜杠问题。解决方法是 首先调用:QString path="HKEY_LOCAL_MACHINE\\HARDWARE\\DE...

weixin_39858298的博客 248

QT 修改注册表

使用的是qt4.1.0  版本  适用settings得到 注册表中HKEY_LOCAL_MACHINE//HARDWARE//DEVICEMAP//SERIALCOMM//"  下 可用串口信息。现在遇到的问题是注册表中的信息是/Device/Serial0 用settings取得key名字是"/Device/Serial0 " 有" / "符号的时候 settings中好像无法直接得到这种key下面的内容 程序运行结果 key="/Device/Serial0 "    values下面的值是空;手动把

3628

红包超发怎么办?强一致性、事务与幂等设计实战

在支付类业务中,强一致性是保障资金安全的核心概念,它要求并发操作按确定顺序生效,任何后续读取都能看到同一结果。实现强一致性通常依赖数据库事务的原子性、隔离性以及条件更新等机制,避免“先查再扣”引发的竞态问题。理解这些原理,不仅能解决红包超发这类具体故障,也能为库存扣减、券码核销等场景提供通用设计思路。本文从红包金额异常入手,拆解了事务边界、隔离性与幂等约束在资金链路中的落地方式,并给出了从并发验证到对账冲正的全流程实践方案。无论你是正在改造老系统,还是从零设计高并发资金服务,都能从中找到可落地的排查方法和代

weixin_30861459的博客 435

QT7有用的尝试总结(1

1,系统配置 1.  把系统相关的一些目录配置 写到qt.conf文件里,详细情况情参考QSettings里的qt.conf部分   You can use the qt.conf file to override paths or to specify arguments to be passed to the platform plugins. 2. 保存为xml文件...

weixin_30343157的博客 207

Windows平台串口通信与CRC校验上位机项目源码实战

波特率(Baud Rate)是指每秒传输的符号数(symbols per second),在二进制串行通信中通常等于每秒传输的比特数(bit/s)。它直接决定了数据传输的速度。例如,波特率为 9600 表示每秒可传输 9600 个比特。若采用标准 10 位帧格式(1 起始位 + 8 数据位 + 1 停止位),则每帧占用 10 比特时间,实际有效数据速率为:随着嵌入式处理器性能提升,越来越多设备支持更高的波特率,如 115200、230400、甚至 9216001.5 Mbps。

weixin_31315007的博客 747

基于Qt串口通信的嵌入式上位机开发:LED控制与陀螺仪数据可视化

串口通信作为嵌入式系统与上位机交互的基础技术,其核心原理在于通过异步串行协议实现设备间的可靠数据传输。在工程实践中,Qt框架的QSerialPort模块为跨平台串口应用开发提供了强大支持,其价值在于简化了底层通信细节,使开发者能聚焦于应用层逻辑。典型的应用场景包括工业控制、物联网设备监控以及传感器数据采集等。本文以嵌入式开发中常见的LED控制与陀螺仪数据采集为例,详细阐述了如何利用Qt实现稳定高效的串口通信模块,并重点解决了多线程环境下的数据安全与实时可视化问题,其中涉及数据解析、协议设计以及通过Qt Ch

weixin_30781775的博客 379

上位机软件开发入门:多线程处理串口数据的初步实践

在上位机软件开发中,串口通信常面临数据接收阻塞与实时性不足的问题。通过引入多线程机制,将串口读取、解析与界面更新分离,可显著提升响应速度与稳定性。本文结合具体代码示例,演示如何安全地在线程间传递串口数据,并规避资源竞争,是上位机软件开发初学者进阶的关键一步。

weixin_33531560的博客 286

C++串口通讯实战:从Win32 API到跨平台类设计

串口通讯是计算机与外部设备进行数据交换的基础方式,通过特定的物理接口和通信协议实现字节级数据传输。其核心原理涉及波特率、数据位、停止位等参数的精确匹配,以确保信号同步与数据完整性。在软件工程中,串口编程的价值在于连接软件逻辑与物理世界,是嵌入式系统、工业控制和物联网等领域的关键技术。典型的应用场景包括单片机通信、传感器数据采集和设备调试。本文以C++实现为例,深入探讨了如何利用面向对象思想和Pimpl设计模式构建健壮的串口类,并详细解析了在Windows平台下使用Win32 API进行同步与异步IO操作的具

weixin_30254435的博客 297

QT的QSettings 和 JSON 管理配置文件

/ 假设有结构体 MyPointint x, y;// 必须注册类型// 存储(将自定义类型包装进 QVariant)// 读取类作用将 JSON 与二进制/文本互转表示 JSON 对象 ({}QJsonArray表示 JSON 数组 ([]QJsonValue表示任意 JSON 值(对象/数组/字面量)使用这些类可以轻松地在 Qt 程序中生成、解析、存储和传输 JSON 数据,非常适合与 REST API、配置文件、网络通信等场景配合。

weixin_46573401的博客 228
上一篇: 关于QT的一些资料分享
下一篇: 详解 Qt 串口通信程序全程图文
ustc_max
博客等级 码龄14年 5粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值