Qt实现定时自动检测串口

在学Qt串口使用时,参考了CSDN上挺多的博客,大部分都讲的不错,适合初学者。

串口操作基本介绍

Qt为串口操作提供了两个类QSerialPort和QSerialPortInfo,QSerialPortInfo可以用来获取电脑当前接入的串口信息,包括串口号、系统地址、基础描述和制造厂商等。QSerialPort提供了操作串口的接口,包括打开和关闭串口、读取串口数据、通过串口返送数据、设置串口数据传输长度、停止位、奇偶校验位等基础配置。具体可参见Qt帮助手册。

QSerialPortInfo使用

参照Qt帮助手册,使用availablePorts(),可获取当前活动的串口号,返回一个串口号列表。实例如下

QStringList MainWindow::getportinfo()
{QStringList serialportinfo;foreach(QSerialPortInfo info,QSerialPortInfo::availablePorts()){serialportinfo<<info.portName();}// ui->comboBox->addItems(serialportinfo);return serialportinfo;
}

QSerialPort使用

串口会配合combox使用,可获取当前想要打开的串口。实例化QSerialPort,配置串口信息。实例如下

void MainWindow::openserialprot()
{if(my_serialport->isOpen()){my_serialport->clear();my_serialport->close();}my_serialport->setPortName(ui->comboBox->currentText().toUtf8());my_serialport->open(QIODevice::ReadWrite);if(!my_serialport->isOpen()){qDebug()<<"串口打开错误";QMessageBox::critical(this,"error","串口打开失败!");return;}ui->Serial_close_B->setEnabled(my_serialport->isOpen());qDebug()<<"串口打开成功!";//设置各项参数my_serialport->setBaudRate(115200);my_serialport->setDataBits(QSerialPort::Data8);my_serialport->setFlowControl(QSerialPort::NoFlowControl); //无硬件流控制my_serialport->setParity(QSerialPort::NoParity);   //无奇偶校验位my_serialport->setStopBits(QSerialPort::OneStop);  //一个停止位
}

自动刷新串口号

利用一个定时器,每当定时结束,自动获取一次串口信息,对比上一次串口信息,判断时候需要对串口列表刷新。实例如下

 imerforport=new QTimer();timerforport->start(500);connect(timerforport,&QTimer::timeout,this,&MainWindow::reflashcombobox);void MainWindow::reflashcombobox()
{timerforport->stop();old_portinfo=my_serialportinfo;my_serialportinfo=getportinfo();QString com=ui->comboBox->currentText();if(old_portinfo.length()!=my_serialportinfo.length()){ui->comboBox->clear();   //清空列表//说明串口列表出现变化,更新列表if(my_serialport->isOpen())        //有串口打开的时候{   //保证ui->comboBox->addItem(my_serialport->portName());foreach(QString comname, my_serialportinfo){if(comname!=my_serialport->portName())ui->comboBox->addItem(comname);}}else                              //无串口打开的时候{foreach(QString comname, my_serialportinfo){ui->comboBox->addItem(comname);}}if(!my_serialportinfo.contains(com)&&my_serialport->isOpen()){QMessageBox::critical(this, tr("Error"), "串口连接中断,请检查是否正确连接!");closeserialport();ui->comboBox->removeItem(ui->comboBox->currentIndex());}}timerforport->start();
}

Qt实现定时自动检测串口相关推荐

  1. qt linux下自动检测U盘热插拔

    如果用U盘来更新软件,需要先删除当前的可执行文件,但是如果删除之后,复制失败的话会导致后续没有文件可以运行了.一个方法是将新的可执行文件放到另一个目录中,当copy成功后修改linux的启动文件,然后 ...

  2. 单片机c语言波特率检测,基于MSP430系列微控制器串口通信时的波特率自动检测的实现...

    通常微控制器通过串行接口与其它终端进行通信时,两个终端需要通讯波特率一致才能达到准确与可靠的通讯效果,串行波特率的自动检测(ABR)可以解决通信终端的波特率自动匹配问题,从而实现微控制器与PC或其它主 ...

  3. linux上mysql定时备份数据库数据_Linux下如何实现MySQL数据库每天定时自动备份

    在云计算的浪潮下,企业多将业务部署在云上.对于数据库中的数据,直接使用云数据库自带的备份功能实现备份,操作简单.但是云数据库备份数据的存储空间有限制,一旦超出存储量便自动关闭备份功能,运维人员往往也会 ...

  4. 低分辨率和畸变严重的棋盘格角点的自动检测

    文章:Automatic Detection of Checkerboards on Blurred and Distorted Images 作者:Martin Rufli, Davide Scar ...

  5. VC++ 动态检测串口的热插拔(一)通过遍历实现

    在串口编程中经常需要知道串口号,用来配置串口,可是没有好的办法,只能进到设备管理器中去看,那么如何能够实现软件的自动检测串口号,并且可支持热插拔检测那? 下面将讲述两种方法来实现这种效果:一种是遍历设 ...

  6. Jenkins系列:5、wsl下的Jenkins编译Windows下的Qt程序并自动打包成exe

    Jenkins系列:5.wsl下的Jenkins编译Windows下的Qt程序并自动打包成exe 文章目录 Jenkins系列:5.wsl下的Jenkins编译Windows下的Qt程序并自动打包成e ...

  7. 如何管理计算机自启,电脑定时自动开机怎么设置(8种方法)

    ‍‍方法一.电脑定时自动开机怎么设置‍‍ 第一步:在bios设置主界面中选择"powermanagementsetup",进入电源管理窗口.缺省情况下,"resumeby ...

  8. 微型计算机抽象原理,微机自动检测系统的结构原理及功能设计

    1前言 检测问题广泛存在于各个领域.随着科学技术的高速发展,随着人类生活水平.生产力水平的提高,检测问题越来越多,对检测提出的要求也越来越高:要求能更快.更准.更灵敏.更可靠地完成检测任务:要求能实现 ...

  9. 自动检测更新域名绑定技术

    一.背景介绍 当前网络处于校内网环境,登录外网需要学生账号,中间有小米路由.不同时间登录可能会出现ip地址更换.(当前路由下有两台电脑和一台nano) 要实现的目标:将个人路由下的设备用二级域名绑定, ...

最新文章

  1. 如何实现RESTful Web API的身份验证
  2. shiro 散列加盐(salt) 次数的效果
  3. iframe内联元素有白边原因_教你如何使用内联框架元素 IFrames 的沙箱属性提高安全性?
  4. SAP CRM Survey调查问卷的存储模型
  5. 在一台服务器上搭建多个项目的SVN
  6. 封装(私有化成员变量,获取变量值)
  7. android 多线程断点续传下载 三
  8. 大学毕业10年,同学之间的差距是怎样拉开的?答案很现实!
  9. 从零开始拼凑的_如何从零开始拼凑AI
  10. 城市智能升级 算法、算力、数据、行业智慧不可缺
  11. 为什么Ruby方法中使用感叹号?
  12. Html图片懒加载动画,带加载进度的Web图片懒加载组件Lazyload
  13. c语言 运行库 下载,Visual C++运行库合集
  14. Spectre侧信道攻击过程验证
  15. uniapp点击复制文本
  16. 程序员最常用的6大技术博客排行榜
  17. Ruby与kiba的初学者etl教程
  18. 苹果safari浏览器的正确使用方法
  19. Word中的空格变成点的问题与解决
  20. 色彩系列教程(3):实际运用

热门文章

  1. 自建cdn搭建_CDN自建方案
  2. 关于Cadence导出网表
  3. python模拟密码有效性检测功能_Python模拟登陆 —— 征服验证码 3 CSDN-阿里云开发者社区...
  4. [聊天实录]关于开源软件
  5. 1、Apache启动失败,请检查相关配置。√MySQL5.1已启动。解决方案:
  6. 当一个页面从B返回到A后,取消B页面的所有请求
  7. [转]一个优秀的php相册系统——Coppermine Photo Gallery
  8. 单词学习-Unit2Text3-2(15年8月6日,第16天)
  9. 八航实业(深圳)有限公司离职感言
  10. KV数据库是怎样支持SQL语句的