一、成品图展示

成品图如下所示:

二、串口通讯步骤

1、在工程文件(.pro)中添加串口通信相关运行库:QT += serialport

2、在头文件中添加:

#include <QSerialPort>
#include <QSerialPortInfo>

3、在头文件中定义全局的串口对象:QSerialPort *m_serialPort;

4、扫描可用串口:

// 扫描可用串口
QStringList Serial::scanSerial()
{
QStringList serialStrList; // 读取串口信息
foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
m_serialPort->setPort(info);
// 判断端口能否以读写方式打开
if(m_serialPort->open(QIODevice::ReadWrite))
{
serialStrList.append(m_serialPort->portName());
m_serialPort->close(); // 然后自动关闭等待人为开启(通过"打开串口按钮")
}
} return serialStrList;
}

5、打开串口:

// 打开串口
bool Serial::open(QString serialName, int baudRate)
{
// 设置串口名
m_serialPort->setPortName(serialName);
// 打开串口(以读写方式)
if(m_serialPort->open(QIODevice::ReadWrite))
{
m_serialPort->setBaudRate(baudRate); // 设置波特率(默认为115200)
m_serialPort->setDataBits( QSerialPort::Data8 ); // 设置数据位(数据位为8位)
m_serialPort->setParity( QSerialPort::NoParity ); // 设置校验位(无校验位)
m_serialPort->setStopBits( QSerialPort::OneStop ); // 设置停止位(停止位为1)
m_serialPort->setFlowControl( QSerialPort::NoFlowControl ); // 设置流控制(无数据流控制) // 当下位机中有数据发送过来时就会响应这个槽函数
connect(m_serialPort, SIGNAL(readyRead()), this, SLOT(readData()));
// 当下位机中有数据发送过来时就会触发这个信号,以提示其它类对象
connect(m_serialPort, SIGNAL(readyRead()), this, SIGNAL(readSignal())); return true;
} return false;
}

6、关闭串口:

// 关闭串口
void Serial::close()
{
m_serialPort->clear();
m_serialPort->close();
}

7、 发送数据给下位机:

// 发送数据给下位机
void Serial::sendData(QByteArray &sendData)
{
// 发送数据帧
m_serialPort->write(sendData);
}

8、读取下位机发来数据:

// 读取下位机发来数据
void Serial::readData()
{
// 将下位机发来数据存储在数据缓冲区
m_readBuf = m_serialPort->readAll();
}

上述代码都进行了封装,单独构建了一个 Serial 类,没有和 Widget 类混杂在一起。

注:测试串口时,若没有硬件条件,可以使用 VSPD 工具生成虚拟串口,具体请参考:【实用教程】VSPD虚拟串口工具——从此告别硬件串口调试

三、UI展示

四、源码下载:

GitHub

参考:

QT5串口通信(Hex格式传输)

QT 制作串口调试小助手----(小白篇)

Qt 16进制字符串跟QByteArray互转

Qt 编写串口调试助手的更多相关文章

  1. Qt编写网络调试助手(TCP客户端+TCP服务端+UDP服务端)终极版开源

    时隔半年,对网络调试助手工具进行所有代码重写,这次目录结果整齐的一逼,代码整齐的一逼,非常完善了,打死也不再改版了.这次真的打死也不再改版了.旧版本1:http://www.qtcn.org/bbs/ ...

  2. 串口调试助手vc源程序及其详细编写过程

    串口调试助手vc源程序及其详细编写过程   目次: 1.建立项目 2.在项目中插入MSComm控件 3.利用ClassWizard定义CMSComm类控制变量 4.在对话框中添加控件 5.添加串口事件 ...

  3. 基于.Net C# 通信开发-串口调试助手

    基于.Net C# 通信开发-串口调试助手 1.概述 串口调试助手,广泛应用于工控领域的数据监控.数据采集.数据分析等工作,可以帮助串口应用设计.开发.测试人员检查所开发的串口应用软硬件的数据收发状况 ...

  4. OSDA - 一个以MIT协议开源的串口调试助手

    市场其实有很多开源的串行端口调试助手(Open Serial Port debug assistant),但其中很大一部分没有明确的开源协议,还有一部分只限个人使用,所以编写了一个并以MIT协议授权开 ...

  5. QT 制作串口调试小助手----(小白篇)

    一.成品图展示 简介:因zigbee实验,制作一个相对简易版的上位机,接收来自zigbee无线传感采集的温湿度.光照等数据. 并且将数据部分描绘成实时动态折线统计图. 二.主要功能介绍 主要使用QT自 ...

  6. C#基于wpf编写的串口调试助手

    支持数据保存,自定义协议解码等功能 链接:https://pan.baidu.com/s/1zvhcES4QIjpDDJGzth1qOA 提取码:lp2x

  7. 纪念下自学QT 第十天 终于写成了串口调试助手

  8. Qt编写串口通信程序全程图文解说

    (说明:我们的编程环境是windows xp下,在Qt Creator中进行,假设在Linux下或直接用源代码编写,程序稍有不同,请自己修改.) 在Qt中并没有特定的串口控制类,如今大部分人使用的是第 ...

  9. 转:Qt编写串口通信程序全程图文讲解

    转载:http://blog.csdn.net/yafeilinux/article/details/4717706  作者:yafeilinux (说明:我们的编程环境是windows xp下,在Q ...

随机推荐

  1. MS14-068域提权漏洞复现

    MS14-068域提权漏洞复现 一.漏洞说明 改漏洞可能允许攻击者将未经授权的域用户账户的权限,提权到域管理员的权限. 微软官方解释: https://docs.microsoft.com/zh-cn ...

  2. 【深度学习】计算机视觉中的 Single-Scale 和 Multi-Scale

    Single-Scale:是指把一张图片送到 CNN : Multi-Scale:一般会送到 CNN 十张图片:比如高宽是 256 Χ 256 的图片,Multi-Scale会在它的四个角以及中心裁剪 ...

  3. 微信分享网页时自定义缩略图和简介(.net版本)

    要实现微信分享网页时自定义缩略图和简介,需开发者在公众平台网站中创建公众号.获取接口权限后,通过微信JS-SDK的分享接口,来实现微信分享功能. 下面来说明实现步骤. 第一部分 准备步骤 步骤一:注册 ...

  4. Webpack相关原理浅析

    基本打包机制 本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler).当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(de ...

  5. 带你理解Xcode Derived Data

    什么是Xcode Derived Data?为什么它很重要呢? “Clean derived data”,当你遇到一些极其奇怪的构建问题时,你也许经常听到这句话. Derived Data是一个文件夹 ...

  6. Struts2 Action的3种创建方式

    Action是Strut2的核心内容,相当于Servlet,用于处理业务. Action是一个Java类,直接新建Java类即可. Action有3种实现方式. 1.使用POJO,设置成员变量,写对应 ...

  7. Scrum冲刺博客

    一.各个成员在Alpha阶段认领的任务 已完成 二.各个成员的任务安排 三.整个项目期的任务量 按实际考试情况以及开发情况决定,初始计划是完成登录以及个人目标版块的完整功能,其它版块共进,保证最终能够 ...

  8. Jenkins 打tag回滚

    利用jenkins,从gitlab上拉取代码,然后发布,如果想进行代码回退,其实还是代码发布,拉取的时候,选择合适的标签. 一.利用Git parameter插件选择branch或tag.下面的文本参 ...

  9. JavaWeb中点赞功能的实现及完整实例

    实现原理1.功能描述:一个用户对同一文章只能点赞一次,第二次就是取消赞2.建立一个点赞表great,字段有文章ID(aid),点赞用户ID(uid)3.当有用户进行点赞行为时,使用aid和uid搜索点 ...

  10. Linux下对input设备调用ioctl时指定EVIOCGBIT选项时的缓冲区该多大【转】

    转自:https://blog.csdn.net/imred/article/details/82669990 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出 ...