解决Qt5的QserialPort串口数据接受不完整的问题------完全有效

解决Qt5的QserialPort串口数据接受不完整的问题


解决问题出处: https://blog.csdn.net/jason_thinking/article/details/78455750.
学习中遇到使用Qt在Windows下读取串口信息功能。串口设备是125K的低频RFID阅读器

QSerialPort的readyRead()信号,只要有数据就抛出,这就导致一条数据分多次抛出。由于我使用的串口接收数据没有固定的开头和结尾,这就导致无法获取正常的一组数据
我所使用的串口设备: 解决Qt5的QserialPort串口数据接受不完整的问题------完全有效_第1张图片
解决思路:增加接收延时功能,把多次读取的数据保存到缓冲区,延时结束,一次性读取数据
在这里插入图片描述
由于QSerialPort没有提供串口接收延时功能,需要用到QTimer:
需要先创建timer对象。
解决Qt5的QserialPort串口数据接受不完整的问题------完全有效_第2张图片
然后定时器结束会触发timeout信号,执行serialRead()槽函数
解决Qt5的QserialPort串口数据接受不完整的问题------完全有效_第3张图片
执行结果:
解决Qt5的QserialPort串口数据接受不完整的问题------完全有效_第4张图片
本示例只解决问题而展示的代码,前面串口设置相关代码可自行百度。

你可能感兴趣的:(Qt5串口数据接收处理)