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 ...
随机推荐
- SQL Server 跨服务器、跨版本使用复制 (2008、2012)
在两台不同的服务器间实现SQL Server 的发布和订阅,需要一些设置. 测试环境:2008数据库.2012数据库,可实现跨版本发布订阅 本次测试是08的数据库做发布端 ,使用08数据及12数据库均 ...
- pycharm工具设置py模板
直接上截图把,更加明确清晰 (a)shebang行 #!/usr/bin/python3 (b)预定义的变量要扩展为格式为$ {<variable_name>}的相应值. 可用的预定义文件 ...
- mask-rcnn的解读(三):batch_slice()
我已用随机生产函数取模拟5张图片各有8个box的坐标值,而后验证batch_slice()函数的意义.由于inputs_slice = [x[i] for x in inputs] output_sl ...
- i春秋暑期训练营丨渗透测试工程师开课啦
每个人的夏天 都有专属的解锁方式 或来一次难忘的旅行 或躺在家里吹着空调吃西瓜 又或者是和小伙伴参加暑期训练营 i春秋暑期渗透测试工程师 报名通道已全部开启 为了保证课程质量,采取小班教学,每班仅限3 ...
- JavaWeb之文件上传和下载
在如今的互联网时代,人们越来越喜欢将自己的数据存放到互联网上,于是便诞生了很多类型的软件,比如360网盘,百度网盘,云盘之类的.所以说,文件上传和下载的功能是现在非常主流的一个功能,应用十分广泛. 那 ...
- Fundebug录屏插件更新至0.5.0,新增domain参数
摘要: 通过配置domain来保证"视频"的正确录制 录屏功能介绍 Fundebug提供专业的异常监控服务,当线上应用出现 BUG 的时候,我们可以第一时间报警,帮助开发者及时发现 ...
- 队列(Quene)
对multiprocessing中的Quene进行演示 import multiprocessing """ 队列Quene是mutiprocessing 中 的一个类 ...
- firewalld规则写法
需要注意的是Firewalld中的区域与接口 一个网卡仅能绑定一个区域.比如: eth0-->A区域 但一个区域可以绑定多个网卡.比如: B区域-->eth0.eth1.eth2 可以根据 ...
- 常用linux系统监视软件
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo ##epel源 yum install -y ...
- jenkins使用小技巧:jenkins构建出来的war/jar包如何带上SVN号?
在实际使用过程中,一般会这样比如说打出来的包是 mypackage.jar, 但是每次打出来都是固定的 mypackage.jar如何来区分和上一个包的区别呢? 一般来说,会把打出来的包带上个 svn ...