Qt实现串口调试工具

2023-11-04

一、效果图
在这里插入图片描述
二、重要方法和函数
①模块和头文件:Qt中要调试串口,需要在.pro文件中增加串口调试的模块,代码如下:

QT += serialport

然后在头文件中,需要包含串口调试的头文件,代码如下所示:

#include <QSerialPort>
#include <QSerialPortInfo>

②获取可用串口:Qt下获取可用串口非常简单,QSerialPortInfo类有一个静态成员函数:availablePorts(),一句话就可以获取到所有的可以使用的串口对象。函数原型如下:

static QList<QSerialPortInfo> availablePorts();

返回的是一个QList对象,遍历这个对象,即可获取到所有的QSerialPortInfo对象,QSerialPortInfo对象中包含串口的绝大多数信息,包括串口名称、串口描述、设备生产商等信息。
③打开串口:串口的操作,包括打开、关闭、读写都封装在QSerialPort对象中,所以先创建QSerialPort对象,代码如下所示:

QSerialPort* comSerial=new QSerialPort();

在打开串口之前,需要先指定打开的串口名称,比如COM1、COM2等,这里假设COM1是可用的串口,打开串口代码如下:

comSerial->setPortName(QStringLiteral("COM1"));
comSerial->open(QIODevice::ReadWrite);

这里采用的是读写方式打开串口,也可以选择其他模式,比如只读打开、只写打开等。
打开串口之后,需要设置其他属性,比如波特率、数据位、校验位、停止位和流量控制等。
④接收串口数据:Qt读取串口数据,才用的是信号通知方式,所以需要在代码中添加信号对应的槽,并用connect函数绑定,代码如下所示:

connect(comSerial,&QSerialPort::readyRead,this,&ComDebugTool::SlotReadData);
void ComDebugTool::SlotReadData()
{
    if(comSerial==nullptr)
        return;
    QByteArray readBuf;
    readBuf=comSerial->readAll();
}

每次串口读取到数据之后,会通过信号传递回来,在槽函数中,接收所有数据,然后就可以分析数据,做一些他操作,比如界面用16进制显示出来等。
⑤发送串口数据:这里就比较简单了,就一句话,代码如下:

comSerial->write(sendByte);

其中sendByte是需要发送的数据。
⑥接收的QByteArray数据转16进制:直接上代码:

QString tmpMsg="";
tmpMsg=bufArray.toHex().toUpper();
int len = tmpMsg.length()/2;
for(int i=1;i<len;++i){
    tmpMsg.insert(2*i+i-1," ");
}

其实核心就是toHex()函数。
三、其他说明
由于在编写写入串口数据时,串口设备坏了,所以写入数据部分代码没有经过验证,可能不正确,现在也没法验证代码是否存在问题。
四、源码获取
①因为源码上传CSDN之后,过不了多久,就要求非常高的积分,所以这里没有上传,需要源码的可以加群联系作者,群二维码为:
在这里插入图片描述
②从Git下载,地址为:https://github.com/youyicc/ComDebugTool.git

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt实现串口调试工具 的相关文章

  • 2022-2027年中国重工行业市场全景评估及发展战略规划报告

    报告格式 电子版 纸介版 出品单位 华经产业研究院 本报告由华经产业研究院出品 对中国重工行业的发展现状 竞争格局及市场供需形势进行了具体分析 并从行业的政策环境 经济环境 社会环境及技术环境等方面分析行业面临的机遇及挑战 还重点分析了重点
  • 【文献阅读】数据重采样+特征选择(1)

    目录 1 面向不均衡数据的多分类集成算法 1 1 两阶段采样 1 2 算法整体框架 1 3 实验 1 4 期刊 2 基于多阶段混合集成的中小企业信用风险评价 3 基于边界自适应SMOTE和FocalLoss函数改进LightGBM的信用风险
  • flask的安装与使用

    说明 最近的项目需要用到flask 貌似3年前用过 不过很久没搞了 以前java web比较熟 这里做个简单的入门记录 官网 http docs jinkan org docs flask 下载与安装 pip install flask 建
  • 云计算时代——本质、技术、创新、战略

    云计算时代 本质 技术 创新 战略 一线云计算布道师历时6年力作 透析云计算本质 简述云计算关键技术 分析主要云服务架构 解剖云计算巨头策略 既有广度又有深度 云计算2 0时代必备 刘黎明 王昭顺 著 ISBN 978 7 121 2318
  • [附源码]Python计算机毕业设计大学生网络安全题库系统Django(程序+LW)

    该项目含有源码 文档 程序 数据库 配套开发软件 软件安装教程 项目运行 环境配置 Pychram社区版 python3 7 7 Mysql5 7 HBuilderX list pip Navicat11 Django nodejs 项目技
  • MySql 在 Linux中字符集导致乱码问题的解决

    1 查看字符集 show variables like character show variables like char 看看出现的结果 默认的是客户端和服务器都用了latin1 所以会乱码 2 修改 1 首先应该复制配置文件 2 进入
  • jmeter同步定时器

    同步定时器是jmeter中一个比较重要的定时器 同步定时器 相当于一个储蓄池 累积一定的请求 当在规定的时间内达到一定的线程数量 这些线程会在同一个时间点一起并发 可以用来做大数据量的并发请求 验证服务器性能 1 线程中 线程属性 gt 线
  • postgresql(pg)数据库简介

    postgresql pg 数据库简介 1 什么是PostgreSql PostgreSQL是一个功能强大的开源对象关系型数据库系统 他使用和扩展了SQL语言 并结合了许多安全存储和扩展最复杂数据工作负载的功能 PostgreSQL的起源可
  • 深度学习------卷积(conv2D)底层

    卷积是深度学习的核心基础 充分理解卷积计算原理 二维卷积计算底层编程 代码按下列要求完成 lt 1 gt 定义图像image和核函数kernel矩阵 lt 2 gt 打印输出图像image和核函数的维度 lt 3 gt 定义函数comput
  • [转]npm查看一个包的版本信息

    我们npm install安装一个包之后 怎么查看这个包的版本信息呢 过一段时间之后 如何查看这个包最新的版本信息呢 下面将做一个全面的总结 1 查看项目中安装的所有的包 npm list 结果如下 vue2 0 test 0 1 0 C
  • 数字带通传输系统matlab仿真实验,基于MATLAB的数字带通传输系统设计

    基于MATLAB的数字带通传输系统设计 基于MATLAB的数字带通传输系统设计 通信原理课程实验 做了一晚上头脑异常清晰 写下来和大家分享下 程序有点问题 但可以基本实现要求 话不多说 上干货 软件环境是MATLAB2019B 大家如果找到
  • 机器学习(四):基于KNN算法对鸢尾花类别进行分类预测

    文章目录 专栏导读 1 KNN算法原理 2 实战案例 对鸢尾花类别分类预测 2 1确定特征和类别 2 2对特征进行处理 2 3对模型调参 选择最优参数 2 4使用分类模型进行预测 2 5评估模型 检验模型效果 3 完整代码及结果 专栏导读
  • idea导入maven项目问题

    问题产生原因 idea加载maven项目 如果网络不通畅 会在maven仓库中产生一个文件 如下图所示 当网络通畅时 在下载就会因为此文件导致无法下载正确的maven依赖 解决方案 打开maven仓库的根目录 搜索 pom lastUpda
  • 四张图,读懂 BIO、NIO、AIO、多路复用 IO 的区别

    作者 扛麻袋的少年 blog csdn net lzb348110175 article details 98941378 学习之前 我们先来了解一下IO模型 同步阻塞IO Blocking IO 即传统的IO模型 同步非阻塞IO Non
  • 智能工厂的指挥中心:APS排程系统

    从中国制造2025发布开始 我们就算正式进入数字信息化制造时代了 这就代表着很多的企业面临工业化转型 处理传统式的制造形式 版本升级为智能制造形式 APS指的是高级计划与排程均衡供应链与生产过程中各种资源 在不同的供应链与生产瓶颈阶段给出最
  • elasticsearch 脚本排序

    elasticsearch 脚本排序主要用于复杂场景的综合排序 脚本语言有 java painless groovy 目前调研的为painless kibana 脚本创建mapping DELETE ksc metadata PUT ksc
  • nacos支持配置文件热部署(@RefreshScope注解)

    nacos支持配置文件热部署 1 原理 RefreshScope注解实现的原理 是刷新bean 2 定义的变量 在代码中用变量来接 直接在代码块里面使用 示例 1 在配置文件定义一个share config的属性 share config
  • Ajax简单异步上传图片并回显

    前台代码 上传图片按钮 a href 选择图片 a 隐藏的文件选择器

随机推荐

  • C语言内功修炼---指针详讲(初阶)

    前言 都说会用一门语言几个礼拜就可以了 这句话我不敢苟同 至少在我学习C语言指针之后就不这么觉得了 不信 来上才艺 代码1 void 0 代码2 void signal int void int int 这两行代码出自 C陷阱和缺陷 我相信
  • react ant-design Select组件下拉框map不显示问题

    问题描述 在使用Select Option下拉组件时 map遍历后不显示下拉框 错误写法 dataList dataList map item gt
  • 洛谷P1010 [NOIP1998 普及组] 幂次方题解

    数论递归 题目描述 任何一个正整数都可以用2的幂次方表示 例如137 27 23 20 同时约定方次用括号来表示 即ab可表示为 a b 由此可知 137可表示为2 7 2 3 2 0 进一步 7 22 2 20 21用2表示 并且3 2
  • idea快捷键和leetCode快捷键

    idea替换字符串快捷键 Ctrl r idea批量重命名 shift F6 project structure F4打开 构造方法 重写方法快捷键 Alt insert 设置字体 File settings editor font Ctr
  • Python网络爬虫:50行代码爬取CSDN博客文章列表 并将点赞评论等数据存储到Excel表格

    hello 大家好 我是wangzirui32 今天我们来学习如何爬取CSDN博客文章列表 并将数据存储到Excel里 开始学习吧 Tips 本节课有点复杂 请耐心学习 学习目录 前言 1 网页代码分析 2 编写代码 写在最后 前言 最近
  • Yolov5项目在RK3588s设备上的部署(RMYC2023技术分享)

    前言 跟作者比赛有关 可以选择略过 在RMYC以往的赛季当中大多数队伍使用到的视觉技术都依赖于RoboMaster官方给的AI人工智能教育套件 但是随着比赛难度的增加 比赛对各种技术的要求AI教育套件可能已经无法满足 同时因AI教育套件的价
  • Laravel利用redis和定时任务实现活跃用户统计

    最近在Summer的 Laravel教程 Web开发实战进阶 学到很多东西 以前只会看文档 大概了解Laravel的内容而在实际运用中确不知道该怎样做 碰到一个需求不会立马联想到 这个东西可以用 实现 不是有句话 实践是检验真理的唯一标准
  • PCB设计中电容电阻的基本常识

    目录 电容的单位换算 电容上标的含义 电阻的单位换算 电阻上标的含义 常用的贴片封装 封装后面字母的含义 电容的单位换算 电容的常见单位有 f mf uf nf pf 1f 1000mf 1mf 1000uf 电容上标的含义 eg1 104
  • background-position 实现背景定位 ie用属性background-position-x

    实现背景图片的定位 如下图分别取各个银行的图标 HTML代码及CSS样式 添加背景图
  • Spring4.1新特性——静态资源处理增强

    Spring 4 1对静态资源处理进行了细化 ResourceHttpRequestHandler细分为两大部分 ResourceResolver和ResourceTransformer Java代码 public interface Re
  • 全球 26 个主流视频网站高清视频下载全搞定,包括 P 站!

    阅读本文大概需要 3 分钟 大家在视频网站上观看视频的时候 有时候需要把一个视频下载下载 却不知道怎么弄 因为目前 99 的网站 都没有现成的下载方法 或者要收费 今天我就来安利一个特别特别香的开源神器 annie 目前已经收获 star
  • response.sendRedirect 传递参数的问题

    原文地址为 response sendRedirect 传递参数的问题 response sendRedirect是通过浏览器来做转向的 假设在A jsp页面设置request setAttribute username admin 那么在
  • LVGL笔记11--lv_btn按钮

    LVGL笔记11 lv btn按钮 lv btn是非常常用的控件 除了能显示文本 主要用途是用来和用户交互 实际上lv btn按钮就是lv cont容器的复杂变体 另外加上可选的子对象 最常用的是lv label标签 共同构成了按钮控件 按
  • Greenplum table 之 appendonly表

    一 压缩表 1 appendonly压缩表的数据视图为pg appendonly 2 appendonly在Greenplum后也可更新与删除 转载于 https www cnblogs com xibuhaohao p 11127443
  • nginx反向代理CSS、JS无法加载

    虽然期末要考试了 昨天晚上看见solo更新了 然后今天准备更新一下我的solo 结果出现了个意外 因为原来是挂在8080端口 现在准备换一下 结果出错了 具体就是 通过Nginx反向代理solo 的时候 通过域名访问出现了网页无法加载CSS
  • 计算机在微表情的应用,一种有效的微表情自动识别方法

    一种有效的微表情自动识别方法 专利摘要 本发明公开了一种有效的微表情自动识别方法 包括 微表情帧序列预处理 微表情信息数据学习和微表情识别 微表情帧序列预处理的方法为 检测获取的微表情序列的帧数 提取每帧图像的数据进行灰度化处理 采用线性插
  • Pytorch DDP原理及配置[最大限度提高GPU利用率]

    前言 pytorch在单机多卡 多机多卡之间已经做了进一步的优化 最早之前可以使用 net torch nn DataParallel net cuda device ids range torch cuda device count 来使
  • 【Transformer系列(3)】 《Attention Is All You Need》论文超详细解读(翻译+精读)

    前言 哒哒 时隔好久终于继续出论文带读了 这次回归当然要出一手王炸呀 没错 今天我们要一起学习的就是传说中的Transformer 在2021年Transformer一经论文 Attention is All You Need 提出 就如龙
  • Python内置对象之字典、集合和序列

    字典 可变类型与不可变类型 字典是 Python 唯一的一个 映射类型 字符串 元组 列表属于序列类型 字典以 关键字 为索引 关键字可以是任意不可变类型 通常用字符串或数值 那么如何快速判断一个数据类型 X 是不是可变类型的呢 两种方法
  • Qt实现串口调试工具

    一 效果图 二 重要方法和函数 模块和头文件 Qt中要调试串口 需要在 pro文件中增加串口调试的模块 代码如下 QT serialport 然后在头文件中 需要包含串口调试的头文件 代码如下所示 include