QT 自动获取可用串口
- 本来想直接用Settings来获取的,但是串口信息类似 "\Device\Serial0",死活获取不了,用了转义、反斜杠还是获取不到,所以就放弃了,网上好像也没有获取成功的。
- 所以就用winapi来获取了,参考了网上源码
- cpp文件
- /*
- 初始化串口
- */
- void MainWindow::init_comm()
- {
- QString path = "HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM";
- QSettings *settings = new QSettings(path, QSettings::NativeFormat);
- QStringList key = settings->allKeys();
- QStringList comlist ;
- QStringList Baudlist ;
- // QStringList Paritylist ;
- // QStringList DataBitslist;
- // QStringList StopBitslist;
- // QStringList ControlFlowlist;
- comlist.clear();
- /* 取串口名 */
- for (int i=0; i<key.size(); i++) {
- comlist << getcomm(i, "value");
- }
- ui->ComPortcomboBox->addItems(comlist);
- ....
- }
- /*
- 读取键值
- */
- QString MainWindow::getcomm(int index, QString keyorvalue)
- {
- QString commresult;
- if (::RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("HARDWARE\\DEVICEMAP\\SERIALCOMM"), 0, KEY_READ, &hKey) != 0) {
- QString error="Cannot open regedit!";//无法打开注册表时返回error
- return error;
- }//if(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,subkey,0,KEY_READ,&hKey)!=0)
- QString keymessage;//键名
- QString message;
- QString valuemessage;//键值
- indexnum = index;//要读取键值的索引号
- keysize = sizeof(keyname);
- valuesize = sizeof(keyvalue);
- if (RegEnumValue(hKey, indexnum, keyname, &keysize, 0, &type, (BYTE*)keyvalue, &valuesize) == 0) { //列举键名和值
- for (int i=0; i<(int)keysize; i++) {
- message = keyname[i];
- keymessage.append(message);
- }
- for (int j=0; j<(int)valuesize; j++) {
- if (keyvalue[j] != 0x00) {
- valuemessage.append(keyvalue[j]);
- }
- }
- if (keyorvalue == "key") {
- commresult = keymessage;
- }
- if (keyorvalue == "value") {
- commresult=valuemessage;
- }
- } else {
- commresult = "nokey";
- }
- RegCloseKey(hKey);//关闭注册表
- return commresult;
- }
- .h文件
- #include <QSettings>
- #include <qt_windows.h>
- HKEY hKey;
- LPCWSTR subkey;
- wchar_t keyname[256]; //键名数组
- char keyvalue[256]; //键值数组
- DWORD keysize,type,valuesize;
- int indexnum;
http://blog.csdn.net/emdfans/article/details/38588537
QT 自动获取可用串口的更多相关文章
- Qt5获取可用串口
概述 本文将介绍Qt5使用类QSerialPortInfo获取可以用串口号 效果 机器上配置的虚拟串口 程序获取结果 源码开始 .pro文件中添加下面的代码 QT += serialport 然后,执 ...
- c++之Linux获取可用串口
1.关于 这份代码来自: stackoverflow 2. 测试 2.1 测试环境: vmware + ubuntu, vmware添加串口(虚拟机关机后再添加) 2.2 测试输出 3. 源码 #in ...
- delphi 自动获取串口
delphi 自动获取串口 https://blog.csdn.net/Nevermore_anger/article/details/79012875 版权声明:本文为博主原创文章,未经博 ...
- 机房ping监控 smokeping+prometheus+grafana(续) 自动获取各省省会可用IP
一.前言 1.之前的文章中介绍了如何使用smokeping监控全国各省的网络情况:https://www.cnblogs.com/MrVolleyball/p/10062231.html 2.由于之前 ...
- Qt小项目之串口助手控制LED
Qt小项目之串口助手控制LED 前言 最近刚学了一点Qt开发上位机,尝试着做个小软件练练手.查找了很多资料,做了一个简单的串口助手,可以实现串口基本发送和接收功能,支持中文显示,还可以控制STM32开 ...
- 转载-centos网络配置(手动设置,自动获取)的2种方法
转载地址:http://blog.51yip.com/linux/1120.html 重新启动网络配置 # service network restart 或 # /etc/init.d/networ ...
- 在qt下获取屏幕分辨率
1,在Windows下可以使用 GetSystemMetrics(SM_CXSCREEN);GetSystemMetrics(SM_CYSCREEN) 获取. 2,在Linux下可以使用XDisp ...
- centos网络配置方法(手动设置,自动获取)
不知道为什么最近一段时间网络特别的慢,还老是断,断的时候,局域网都连不上,当我手动设置一下ip后就可以了,搞得我很无语.下面是2种设置网络连接的方法,在说怎么设置前,一定要做好备份工作,特别是对于新手 ...
- C++解析头文件-Qt自动生成信号声明
目录 一.瞎白话 二.背景 三.思路分析 四.代码讲解 1.类图 2.内存结构声明 3.QtHeaderDescription 4.私有函数讲解 五.分析结果 六.下载 一.瞎白话 时间过的ZTMK, ...
随机推荐
- CAD二次开发(.NET)之PaletteSet和Palette
在CAD中经常用到停靠或浮动的PaletteSet,比如:特性.图层特性管理器.工具选项板等(以下截图来自AutoCAD2010界面). 特性PaletteSet(停靠) 图层特性管理器Palette ...
- 表A中有两个表示时间的字段A,B;如果B的值大于A的值,则把B的值更新为A的值
sql语句:表A中有两个表示时间的字段A,B:如果B的值大于A的值,则把B的值更新为A的值 update 表名 set B=A where B>A
- 获取 web容器中的bean
public class WebContextBeanFinder { public static Object getBean(String beanId) { ServletContext ser ...
- C++_前置声明
为什么要有前置声明? eg: -定义一个类 class A,这个类里面使用了类B的对象b,然后定义了一个类B,里面也包含了一个类A的对象a,就成了这样: //a.h #include "b. ...
- JavaSE学习总结第13天_API常用对象3
13.01 StringBuffer的概述 StringBuffer类概述:线程安全的可变字符序列.一个类似于 String 的字符串缓冲区,但不能修改.虽然在任意时间点上它都包含某种特定的字符序 ...
- J - 今年暑假不AC
J - 今年暑假不AC Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit ...
- scanf一次给多个变量赋值
本节课程笔记: 一是对多个变量进行赋值,二是对非法输入的值做正确处理(处理方式了解即可,相关函数知识后期讲解),三是美化scanf代码加入输出说明. /* Name:scanf一次给多个变量赋值 Co ...
- 在实体对象中访问导航属性里的属性值出现异常“There is already an open DataReader associated with this Command which must be closed first”
在实体对象中访问导航属性里的属性值出现异常“There is already an open DataReader associated with this Command which must be ...
- .net mvc笔记4_依赖注入
一.Building Loosely Coupled Components MVC模式最重要的特点就是关注点分离.我们希望应用中的组件能尽可能的独立,相互之间即使有依赖也要在我们的控制之下. 在理想情 ...
- Umbraco学习1------安装
最近在做一个公益项目,考虑到成本和性价比,最终决定还是选用Umbraco作为CMS平台进行开发. 顺便也借机将Umbraco的使用整理成系列,便于以后的记忆. Umbraco的所有信息,基本都可以在h ...