@功能:
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 自动搜索串口号列表的更多相关文章

  1. Windows系统清除占用的串口号列表批处理

    蛋疼总是无缘无故被占用 @echo off reg query "HKLM\SYSTEM\CurrentControlSet\Control\COM Name Arbiter" / ...

  2. vim 配置文件 ,高亮+自动缩进+行号+折叠+优化

    vim 配置文件 ,高亮+自动缩进+行号+折叠+优化 将一下代码copy到 用户目录下 新建文件为  .vimrc保存即可生效: 如果想所有用户生效 请修改 /etc/vimrc (建议先cp一份)& ...

  3. Android BLE与终端通信(二)——Android Bluetooth基础科普以及搜索蓝牙设备显示列表

    Android BLE与终端通信(二)--Android Bluetooth基础搜索蓝牙设备显示列表 摘要 第一篇算是个热身,这一片开始来写些硬菜了,这篇就是实际和蓝牙打交道了,所以要用到真机调试哟, ...

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

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

  5. selenium 之百度搜索,结果列表翻页查询

    selenium之百度搜索,结果列表翻页查询 by:授客 QQ:1033553122 实例:百度搜索,结果列表翻页查询 解决问题:解决selenium driver获取web页面元素时,元素过期问题 ...

  6. C++解析头文件-Qt自动生成信号定义

    目录 一.概述 二.实现思路 三.代码讲解 1.类图 2.QtCppDescription 3.测试 四.源代码 一.概述 上一篇文章C++解析头文件-Qt自动生成信号声明我们主要讲解了怎么去解析C+ ...

  7. Qt之股票组件-自选股--列表可以拖拽、右键常用菜单

    目录 一.开头嘴一嘴 二.效果展示 三.自选股列表 1.列表初始化 2.添加Item 3.右键菜单 4.拖拽Item 5.刷新数据 四.相关文章 原文链接:Qt之股票组件-自选股--列表可以拖拽.右键 ...

  8. winedt设置自动显示行号[latex]

    options--preferences--appearance 在show line numbers for modes下面的文本框里添加;Tex 这样新建或者打开tex文件的时候就自动显示行号了( ...

  9. 使用AJAX做关键字查询:输入框变化自动搜索、无刷新页面;

    使用AJAX做关键字查询要求:1.无刷新页面2.输入框变化自动搜索 <style type="text/css"> .k{ width:150px; height:30 ...

随机推荐

  1. 转载:C++ STL set学习

    声明:本文转载自Penguin的博客 http://blog.sina.com.cn/s/blog_779cf3410101389s.html 1,set的含义是集合,它是一个有序的容器,里面的元素都 ...

  2. c# webbrowser 清除当前网站 cookie

    //这个方法可以创建一个清除当前页面下指定域的所有cookie //必须是可以访问的域,比如你访问的是qq.com,那么可以清除www.qq.com,qzone.qq.com等页面的cookie // ...

  3. C/C++内存存储

    #include <stdio.h> #include "string.h" #include "malloc.h" void Swap(int a ...

  4. bzoj3244

    很不幸,这题我又被虐了,给个链接http://www.cnblogs.com/g-word/p/3288675.html ..] of longint; f:..,..] of longint; mx ...

  5. bzoj3747

    经典题,记录每个位置对应数下次出现的位置next[i] 每个位置维护当前左端点下到这个位置的和 随着左端点的右移一位到i+1,对[i+1,next[i]-1] 的影响是-a[i], [next[i], ...

  6. attachEvent,addEventListener事件绑定

    兼容各主流浏览器的事件绑定(在同一个事件上添加多个处理函数). 1.绑定方法: //IE attachEvent(事件名, 函数) oBtn.attachEvent('onclick', aaa); ...

  7. Android平台调用WebService详解

    上篇文章已经对Web Service及其相关知识进行了介绍(Android开发之WebService介绍 ),相信有的朋友已经忍耐不住想试试在Android应用中调用Web Service.本文将通过 ...

  8. (转)在mac上配置cocos2d-x开发环境

    转自:http://www.cnblogs.com/xiaodao/archive/2013/01/08/2850751.html 一.下载cocos2d-x最新安装包 在终端中cd到本地将要存放目录 ...

  9. TCP/IP详解学习笔记(8)-DNS域名系统

    前面已经提到了访问一台机器要靠IP地址和MAC地址,其中,MAC地址可以通过ARP协议得到,所以这对用户是透明的,但是IP地址就不行,无论如何用户都需要用一个指定的IP来访问一台计算机,而IP地址又非 ...

  10. Xcode中使用svn时,报证书验证错误Error validating server certificate for

    转:http://blog.csdn.net/yhawaii/article/details/7511141 今天使用Xcode自带的svn客户端时,总是连接不上服务器,报如下错误: Error va ...