找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3297|回复: 12

QT5串口编程—编写简单的上位机

 火.. [复制链接]
  • 打卡等级:即来则安
  • 打卡总天数:27
  • 打卡月天数:6
  • 打卡总奖励:7736
  • 最近打卡:2025-12-20 00:35:11

3317

主题

285

回帖

2万

积分

管理员

积分
23881
发表于 2020-4-22 20:23:32 | 显示全部楼层 |阅读模式
最近在学习嵌入式,而上位机又是一个不可缺少的工具,于是就开始接触QT,学习编写上位机。刚开始的时候什么都不懂,发现《Qt 学习之路 2》有比较好的入门教程。学习了前面部分,对QT有了大概的了解后,就开始在网上寻找串口编程的方法。通过好几天的学习,终于写出了一个用于串口通信的上位机。下面开始介绍串口类的使用。
首先,QT5是自带QSerialPort这个类的,使用时需要在pro文件里面添加一行:
然后直接引用头文件就可以了。
在QT5中,串口通信是借助一个QSerialPort的对象来实现的,在设置QSerialPort对象对串口的名称、波特率、数据位、校验位、停止位等参数后,方能对串口进行读写。下面,我总结了一下借助QSerailPort对串口进行设置、打开、读、写和关闭的过程。
一、设置和打开串口
以上代码是QSerialPort对象的设置示例,作用是:
设置串口名为 COM3
设置波特率为9600
设置数据位为8位
设置没有奇偶校验位
设置停止位为1位
设置没有流控制
以可读写的方式打开串口
设置完这些就能进行读写操作了。如果遇到不理解的地方,可以选择QT的类或函数,然后按F1查阅手册。举个例子,如果我们想查看QSerialPort的其它的属性,可以选择QSerialPort的类名或成员函数,然后按F1。

二、读取数据

串口在收到数据后,会将数据存入接收缓冲区。此时,我们可以通过readAll()函数将接收缓冲区的数据读出来。当串口的接收缓冲区有数据时,QSerilaPort对象会发出一个readyRead()的信号。因此,我们可以编写一个槽函数来读数据,例如:

三、发送数据

使用write函数便可以把字节数组中的字节发送出去。
四、关闭串口

串口不用时,可通过close()函数将其关闭。
接下来是一个实例
1、创建一个新的Widgets Appliaction工程
2、使用QtCreator的ui文件来设计上位机的界面,设计如下:
3、mainwindow.h文件内容如下:
4、mainwindow.cpp文件内容如下:
5、main.cpp文件内容如下:
6、测试(将USB转TTL模块发送和接收引脚短接,自己发自己收)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
工控课堂 www.gkket.com

0

主题

95

回帖

339

积分

注册会员

积分
339
发表于 2020-4-23 19:49:27 | 显示全部楼层
激动人心,无法言表!
工控课堂 www.gkket.com

0

主题

80

回帖

340

积分

注册会员

积分
340
发表于 2020-10-15 17:08:31 | 显示全部楼层
感谢楼主无私分享!
工控课堂 www.gkket.com

0

主题

211

回帖

274

积分

注册会员

积分
274
发表于 2025-11-13 16:39:09 | 显示全部楼层
学到了学到了,这波分享太实用啦!
工控课堂 www.gkket.com

0

主题

717

回帖

2166

积分

高级会员

积分
2166
发表于 2025-11-17 12:12:45 | 显示全部楼层
蹲一波同款,有没有姐妹 / 兄弟推荐?
工控课堂 www.gkket.com

0

主题

87

回帖

145

积分

新手上路

积分
145
发表于 2025-11-17 15:00:53 | 显示全部楼层
内容太顶了!疯狂点赞,已默默收藏~
工控课堂 www.gkket.com

0

主题

218

回帖

720

积分

中级会员

积分
720
发表于 2025-11-17 15:12:29 | 显示全部楼层
这波分析到位,逻辑满分!
工控课堂 www.gkket.com

0

主题

103

回帖

198

积分

新手上路

积分
198
发表于 2025-11-17 15:37:25 | 显示全部楼层
同款经历!我当初也这么过来的😂
工控课堂 www.gkket.com

0

主题

57

回帖

93

积分

新手上路

积分
93
发表于 2025-11-17 15:39:49 | 显示全部楼层
不请自来,就想夸一句:太顶了!
工控课堂 www.gkket.com

0

主题

114

回帖

197

积分

新手上路

积分
197
发表于 2025-11-17 15:42:00 | 显示全部楼层
笑不活了,评论区比正文还精彩!
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-22 15:48 , Processed in 0.117609 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表