1. 相关文章汇总
(1)QT解决串口数据接收不完整问题 (貌似贴出的代码可以存下串口接受的全部数据)
(2)<QT障碍之路>qt中使用串口类接收数据不完整
(3)Qt5.7串口接收数据不完整
因为串口本来就不是一次接收完数据,接受数据时需要判断!
(4)qt5信息提示框QMessageBox用法
(5)《用QT做点什么》-3-QT串口开发入门(上) (B站视频教程)
(6)QByteArray使用方法举例
(7)Qt 字符串截取分割
(8)QT中foreach的使用
(9)c++: c++ 字符串解析
(10)【STM32】使用keil提供的JSON库——Jansson
(11)STM32F103C8T6+cJSON 妈妈再也不用担心我的串口协议了
(12)QByteArray详解
(13)Qt串口通信接收数据不完整的解决方法
(14)王超:Qt小项目之串口助手控制LED
(15)郭凤贺:Qt 多线程串口调试助手
尤其是下面这篇文章,建议精读!
Qt串口通信接收数据不完整的解决方法 (灿哥哥的博文,208万+的访问量)
2. 最终解决
在此先要感谢CSDN上认识的湖南大学计算机院的大佬!
分析:单片机在发送完每条完整的数据后,都会发送一个 "rn",那么"n"可以看作结束标志
单片机上传数据的视频
思路:将"n"作为结束标志,以判断是否接收到一个完整的数据。
由上述思路——>具体实现代码:
//缓冲区
QByteArray buffer;
void parse(QByteArray package) {
//解析数据
}
//槽函数
void readData() {
data = serial.readAll();
foreach (char b in data) {
if (b != 'n') {
buffer.append(b);
} else {
parse(buffer);
buffer.clear();
}
}
}
将上面的代码融合到培培哥串口上位机的程序中,得到了全新一代的串口上位机
未完待续~
——20191212