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 ...
随机推荐
- 转载:C++ STL set学习
声明:本文转载自Penguin的博客 http://blog.sina.com.cn/s/blog_779cf3410101389s.html 1,set的含义是集合,它是一个有序的容器,里面的元素都 ...
- c# webbrowser 清除当前网站 cookie
//这个方法可以创建一个清除当前页面下指定域的所有cookie //必须是可以访问的域,比如你访问的是qq.com,那么可以清除www.qq.com,qzone.qq.com等页面的cookie // ...
- C/C++内存存储
#include <stdio.h> #include "string.h" #include "malloc.h" void Swap(int a ...
- bzoj3244
很不幸,这题我又被虐了,给个链接http://www.cnblogs.com/g-word/p/3288675.html ..] of longint; f:..,..] of longint; mx ...
- bzoj3747
经典题,记录每个位置对应数下次出现的位置next[i] 每个位置维护当前左端点下到这个位置的和 随着左端点的右移一位到i+1,对[i+1,next[i]-1] 的影响是-a[i], [next[i], ...
- attachEvent,addEventListener事件绑定
兼容各主流浏览器的事件绑定(在同一个事件上添加多个处理函数). 1.绑定方法: //IE attachEvent(事件名, 函数) oBtn.attachEvent('onclick', aaa); ...
- Android平台调用WebService详解
上篇文章已经对Web Service及其相关知识进行了介绍(Android开发之WebService介绍 ),相信有的朋友已经忍耐不住想试试在Android应用中调用Web Service.本文将通过 ...
- (转)在mac上配置cocos2d-x开发环境
转自:http://www.cnblogs.com/xiaodao/archive/2013/01/08/2850751.html 一.下载cocos2d-x最新安装包 在终端中cd到本地将要存放目录 ...
- TCP/IP详解学习笔记(8)-DNS域名系统
前面已经提到了访问一台机器要靠IP地址和MAC地址,其中,MAC地址可以通过ARP协议得到,所以这对用户是透明的,但是IP地址就不行,无论如何用户都需要用一个指定的IP来访问一台计算机,而IP地址又非 ...
- Xcode中使用svn时,报证书验证错误Error validating server certificate for
转:http://blog.csdn.net/yhawaii/article/details/7511141 今天使用Xcode自带的svn客户端时,总是连接不上服务器,报如下错误: Error va ...