Qt 编写串口调试助手
一、成品图展示
成品图如下所示:

二、串口通讯步骤
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展示

四、源码下载:
参考:
Qt 编写串口调试助手的更多相关文章
- Qt编写网络调试助手(TCP客户端+TCP服务端+UDP服务端)终极版开源
时隔半年,对网络调试助手工具进行所有代码重写,这次目录结果整齐的一逼,代码整齐的一逼,非常完善了,打死也不再改版了.这次真的打死也不再改版了.旧版本1:http://www.qtcn.org/bbs/ ...
- 串口调试助手vc源程序及其详细编写过程
串口调试助手vc源程序及其详细编写过程 目次: 1.建立项目 2.在项目中插入MSComm控件 3.利用ClassWizard定义CMSComm类控制变量 4.在对话框中添加控件 5.添加串口事件 ...
- 基于.Net C# 通信开发-串口调试助手
基于.Net C# 通信开发-串口调试助手 1.概述 串口调试助手,广泛应用于工控领域的数据监控.数据采集.数据分析等工作,可以帮助串口应用设计.开发.测试人员检查所开发的串口应用软硬件的数据收发状况 ...
- OSDA - 一个以MIT协议开源的串口调试助手
市场其实有很多开源的串行端口调试助手(Open Serial Port debug assistant),但其中很大一部分没有明确的开源协议,还有一部分只限个人使用,所以编写了一个并以MIT协议授权开 ...
- QT 制作串口调试小助手----(小白篇)
一.成品图展示 简介:因zigbee实验,制作一个相对简易版的上位机,接收来自zigbee无线传感采集的温湿度.光照等数据. 并且将数据部分描绘成实时动态折线统计图. 二.主要功能介绍 主要使用QT自 ...
- C#基于wpf编写的串口调试助手
支持数据保存,自定义协议解码等功能 链接:https://pan.baidu.com/s/1zvhcES4QIjpDDJGzth1qOA 提取码:lp2x
- 纪念下自学QT 第十天 终于写成了串口调试助手
- Qt编写串口通信程序全程图文解说
(说明:我们的编程环境是windows xp下,在Qt Creator中进行,假设在Linux下或直接用源代码编写,程序稍有不同,请自己修改.) 在Qt中并没有特定的串口控制类,如今大部分人使用的是第 ...
- 转:Qt编写串口通信程序全程图文讲解
转载:http://blog.csdn.net/yafeilinux/article/details/4717706 作者:yafeilinux (说明:我们的编程环境是windows xp下,在Q ...
随机推荐
- WinRAR命令行版本 rar.exe使用详解(适用Linux)
RAR 命令行语法: RAR.exe <命令> [ -<开关> ] <压缩文件> [ <@列表文件...> ] [ <文件...> ] [ ...
- LeetCode——Rank Scores
Write a SQL query to rank scores. If there is a tie between two scores, both should have the same ra ...
- 将流数据输出到Mysql中
outputMysqlApp.scala import java.sql.DriverManager import org.apache.spark.SparkConf import org.apac ...
- Spring Cloud Eureka详细说明
之前学习了如何配置Eureka注册中心.消费者等,关于更详细的一些常用的配置在这里说明. 1.注册中心的自我保护模式 在我们调试Eureka的注册中心时,访问注册中心页面,常常会看见以下提示. 该提示 ...
- Swagger从入门到放弃
如何编写基于OpenAPI规范的API文档 简介 Swagger Swagger是一个简单但功能强大的API表达工具.支持的语言种类繁多 使用Swagger生成API,我们可以得到交互式文档,自动生成 ...
- modbus_tk模块
modbus_tk模块 通过modbus-RTU 读取地址,调用后返回反馈数值和故障信息. modbus_tk模块安装 pip install pymodbus_tk 下面代码功能:读取地址为0x42 ...
- lvm调整卷大小
lvreduce -L 10240M /dev/rhel/home pvchange -xn /dev/sdb1 pvmove -i /dev/sdb1 vgreduce rhel /dev/sdb1 ...
- Mysql优化之6年工作经验总结
我们究竟应该如何对MySQL数据库进行优化?下面我就从MySQL对硬件的选择.MySQL的安装.my.cnf的优化.MySQL如何进行架构设计及数据切分等方面来说明这个问题. 服务器物理硬件的优化 ...
- dga model train and test code
# _*_coding:UTF-8_*_ import operator import tldextract import random import pickle import os import ...
- nth-child,nth-of-type
首先,这两个选择器是用来干什么的? 举例子 p:nth-child(1);这个选择器选择的是p所有父辈元素中第一个子元素,且这个子元素为p,此时就生效. p:nth-of-type(1);这个选择器选 ...