stm32中 can怎么解析上位机json数据_Qt串口通信-解决串口接收数据不完整

55dbe8d96297b2e01d19a3079fad17d9.png

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"可以看作结束标志

d39388a640d358b879e84bda6991745d.png
单片机在每条数据的最后发送的&quot;rn&quot;

单片机上传数据的视频

83df81d55432e617512f04692c95f728.png
单片机每条完整的数据包含5个数https://www.zhihu.com/video/1188488474184073216

思路:将"n"作为结束标志,以判断是否接收到一个完整的数据。

f9487649d8df033e2eefa394209a2d03.png

由上述思路——>具体实现代码:

//缓冲区
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();
        }
    }
}

将上面的代码融合到培培哥串口上位机的程序中,得到了全新一代的串口上位机

884334d8a018ca3cdd4af86b09c4cf7f.png
接收到完整的5个数据https://www.zhihu.com/video/1188504947413704704

未完待续~

——20191212

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值