Qt 自动搜索串口号列表
@功能:
SerialPortList 类实现当前可用的串口进行实时扫描,当发现有新的串口
或是现有串口消失时,SerialPortList类将发出一个QStringList类型的
信号onNewSerialPort,QStringList类型对象中存放当前可用的串口设备。
@使用方法:
1、Qt版本需要高于5.1以上;
2、在新建Qt工程文件中时需要加入QSerialPort模块;即:在xxx.pro文件
中加入 Qt += serialport
3、在应用程序中定义一个曹,用于响应SerialPortList信号,获取串口列表
void onNewPortList(QStringList portName){
ui->comboBoxComList->clear();
ui->comboBoxComList->addItems(portName);
}
4、在应用程序中构建SerialProt对象,连接onNewSerialPort信号:
portList = new SerialPortList(200);
connect(portList, SIGNAL(onNewSerialPort(QStringList)),\
this, SLOT(onNewPortList(QStringList)));
5、开启扫描
portList->ScanStart();
serialPortList.h
#ifndef SERIALPORTLIST_H
#define SERIALPORTLIST_H #include <QTimer>
#include <QDebug>
#include <QSerialPort>
#include <QStringList>
#include <QSerialPortInfo> /* @交流:
* worldsing.cnblogs.com
*
* @功能:
* SerialPortList 类实现当前可用的串口进行实时扫描,当发现有新的串口
* 或是现有串口消失时,SerialPortList类将发出一个QStringList类型的
* 信号onNewSerialPort,QStringList类型对象中存放当前可用的串口设备。
*
* @使用方法:
* 1、Qt版本需要高于5.1以上;
*
* 2、在新建Qt工程文件中时需要加入QSerialPort模块;即:在xxx.pro文件
* 中加入 Qt += serialport
*
* 3、在应用程序中定义一个曹,用于响应SerialPortList信号,获取串口列表
* void onNewPortList(QStringList portName){
* ui->comboBoxComList->clear();
* ui->comboBoxComList->addItems(portName);
* }
*
* 4、在应用程序中构建SerialProt对象,连接onNewSerialPort信号:
* portList = new SerialPortList(200);
* connect(portList, SIGNAL(onNewSerialPort(QStringList)),\
* this, SLOT(onNewPortList(QStringList)));
*
* 5、开启扫描
* portList->ScanStart();
*/ #define DEBUG_INFOR_EN 0 class SerialPortList : public QObject
{
Q_OBJECT public:
SerialPortList();
SerialPortList(quint16);
~SerialPortList(); quint16 scanCycleMs;
QTimer *timer;
QStringList oldPortStringList; void ScanStart();
void ScanStop(); public slots:
void onTimeOut(); signals:
void onNewSerialPort(QStringList);
}; #endif // SERIALPORTLIST_H
serialPortList.cpp
#include "serialportlist.h" //默认构造
SerialPortList::SerialPortList()
{
timer = new QTimer;
scanCycleMs = 200;
oldPortStringList.clear();
connect(timer, SIGNAL(timeout()), this, SLOT(onTimeOut()));
} //自定义扫描周期构造
SerialPortList::SerialPortList(quint16 CycleMs)
{
timer = new QTimer;
scanCycleMs = CycleMs;
oldPortStringList.clear();
connect(timer, SIGNAL(timeout()), this, SLOT(onTimeOut()));
} SerialPortList::~SerialPortList()
{
delete timer;
} //开始扫描
void SerialPortList::ScanStart()
{
timer->stop();
timer->start(scanCycleMs);
} //停止扫描
void SerialPortList::ScanStop(){
timer->stop();
} //周期扫描服务
void SerialPortList::onTimeOut(){ QStringList newPortStringList;
//搜索串口
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()){
#if DEBUG_INFOR_EN
qDebug() << "Name : " << info.portName();
qDebug() << "Description : " << info.description();
qDebug() << "Manufacturer: " << info.manufacturer();
#endif
newPortStringList += info.portName();
} //更新旧的串口列表
if(newPortStringList.size() != oldPortStringList.size())
{
oldPortStringList = newPortStringList;
emit onNewSerialPort(oldPortStringList);
}
}
Qt 自动搜索串口号列表的更多相关文章
- Windows系统清除占用的串口号列表批处理
蛋疼总是无缘无故被占用 @echo off reg query "HKLM\SYSTEM\CurrentControlSet\Control\COM Name Arbiter" / ...
- vim 配置文件 ,高亮+自动缩进+行号+折叠+优化
vim 配置文件 ,高亮+自动缩进+行号+折叠+优化 将一下代码copy到 用户目录下 新建文件为 .vimrc保存即可生效: 如果想所有用户生效 请修改 /etc/vimrc (建议先cp一份)& ...
- Android BLE与终端通信(二)——Android Bluetooth基础科普以及搜索蓝牙设备显示列表
Android BLE与终端通信(二)--Android Bluetooth基础搜索蓝牙设备显示列表 摘要 第一篇算是个热身,这一片开始来写些硬菜了,这篇就是实际和蓝牙打交道了,所以要用到真机调试哟, ...
- C++解析头文件-Qt自动生成信号声明
目录 一.瞎白话 二.背景 三.思路分析 四.代码讲解 1.类图 2.内存结构声明 3.QtHeaderDescription 4.私有函数讲解 五.分析结果 六.下载 一.瞎白话 时间过的ZTMK, ...
- selenium 之百度搜索,结果列表翻页查询
selenium之百度搜索,结果列表翻页查询 by:授客 QQ:1033553122 实例:百度搜索,结果列表翻页查询 解决问题:解决selenium driver获取web页面元素时,元素过期问题 ...
- C++解析头文件-Qt自动生成信号定义
目录 一.概述 二.实现思路 三.代码讲解 1.类图 2.QtCppDescription 3.测试 四.源代码 一.概述 上一篇文章C++解析头文件-Qt自动生成信号声明我们主要讲解了怎么去解析C+ ...
- Qt之股票组件-自选股--列表可以拖拽、右键常用菜单
目录 一.开头嘴一嘴 二.效果展示 三.自选股列表 1.列表初始化 2.添加Item 3.右键菜单 4.拖拽Item 5.刷新数据 四.相关文章 原文链接:Qt之股票组件-自选股--列表可以拖拽.右键 ...
- winedt设置自动显示行号[latex]
options--preferences--appearance 在show line numbers for modes下面的文本框里添加;Tex 这样新建或者打开tex文件的时候就自动显示行号了( ...
- 使用AJAX做关键字查询:输入框变化自动搜索、无刷新页面;
使用AJAX做关键字查询要求:1.无刷新页面2.输入框变化自动搜索 <style type="text/css"> .k{ width:150px; height:30 ...
随机推荐
- UVa 10820 (打表、欧拉函数) Send a Table
题意: 题目背景略去,将这道题很容易转化为,给出n求,n以内的有序数对(x, y)互素的对数. 分析: 问题还可以继续转化. 根据对称性,我们可以假设x<y,当x=y时,满足条件的只有(1, 1 ...
- 私有pod简记
http://www.jianshu.com/p/7a82e977281c http://www.jianshu.com/p/ddc2490bff9f 两个工程 1 代码工程 在github上创建一个 ...
- Android下高斯模糊的算法和demo
采用纯java和RenderScript两种方式来做高斯算法. 也可以用NDK来做,想试试的可以参考: http://stackoverflow.com/questions/2067955/fast- ...
- http请求返回响应码的意思
HTTP 状态响应码 意思详解/大全 HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码.它由 RFC 2616 规范定义的,并得到RFC 2518. ...
- 【Unity3D】Unity自带组件—完成第一人称人物控制
1.导入unity自带的Character Controllers包 2.可以看到First Person Controller组件的构成 Mouse Look() : 随鼠标的移动而使所属物体发生旋 ...
- 总结mysql服务器查询慢原因与解决方法
本文针对MySQL数据库服务器查询逐渐变慢的问题, 进行分析,并提出相应的解决办法,具体的分析解决办法如下: 会经常发现开发人员查一下没用索引的语句或者没有limit n的语句,这些没语句会对数据库造 ...
- 动态生成图片 保存到OutputStream
#region 把图片Copy到输出流 //获得图片全路径 string path = context.Server.MapPath("~/img/158_003.jpg"); / ...
- win7和centos双系统安装
几年之前为了安装xp和linux的双系统曾折腾了好多天,今天为了安装这个win7和centos双系统,也折腾了两天多,哦,我的天,安装个双系统,怎么这么麻烦呢? 没有来得及整理,先铺上草稿,供同志们参 ...
- Tombstone crash
首先,android平台应用程序可能产生以下四种crash:App层:Force close crashANR crashNative层:Tombstone crashKernel层:Kernel p ...
- 编程式事务、XML配置事务、注解实现事务
Spring2.0框架的事务处理有两大类: 1 编码式事务 , 这个不说. 2 声明式事务 , 就说这个. 声明式事务又有三种实现方法: 1 (第一种) 最早的方法,用TransactionProxy ...