关于串口数据接受及处理的问题

2019-07-21 06:35发布

我的串口需要接收一组定常数据

1545361688(1).jpg
1545361519(1).jpg
(校验字节是校验前几位的和)
每一字节对应的意义如上;
我需要对数据高字节与低字节进行处理,高字节基本都是0x00,所以不需要考虑;
对数据低字节的处理如下
         data[0]=USART_RX_BUF[7]/100;
         data[1]=USART_RX_BUF[7]%100/10;
         data[2]=USART_RX_BUF[7]%100%10;

若数据低字节是0x0a 处理后显示0.10

关于数据接收后处理,研究了一天左右,还是比较混乱,如何在确保接收这一帧完整的数据的情况下;对数据进行处理,然后再把处理后得到的0.01(如上得到的结果)显示在TFTlcd上(初步的想法是通过定时器来显示,不放在while循环中显示),请问我这种情况如何确保收到一帧完整的数据?在收到数据后进行数据处理时转回到主函数中处理吗?

(另:初学串口,关于数据接收与处理理解的比较差,各位大神有没有好的帖子推荐)

非常感谢!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
simms01
2019-07-21 09:32
本帖最后由 simms01 于 2018-12-21 11:32 编辑

我常用的方案:

  不管你什么协议 什么长度 什么校验。

首先在中断哪里  设置接收。  收到一个存一个到内存 一直到接收超时,  对的  是一直接收 不做任何判断哦

大循环:   接收超时后 对收到的数据进行处理 。检查规则  例如文件头 校验 等等。。。。如果都符合了 数据爱拆就拆 爱分就分。  


这样不会漏一个字节 也不会卡主

一周热门 更多>