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

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
1楼-- · 2019-07-21 08:04
我常用的方案:
simms01
2楼-- · 2019-07-21 09:32
本帖最后由 simms01 于 2018-12-21 11:32 编辑

我常用的方案:

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

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

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


这样不会漏一个字节 也不会卡主
bebj2009
3楼-- · 2019-07-21 14:56
 精彩回答 2  元偷偷看……
对方无法输入
4楼-- · 2019-07-21 16:48
simms01 发表于 2018-12-21 11:29
我常用的方案:

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

1545365488(1).jpg 1545365568(1).jpg
是这样接收?收到9个之后,设一个标志位进行处理,这样可以吗?
对方无法输入
5楼-- · 2019-07-21 21:03
我可不可以利用IDLE中断,虽然是定长,但接收完一帧数据后也有空闲时间,这个时候我判断一帧数据已经接受完,然后进行处理可以吗?
yklstudent
6楼-- · 2019-07-22 00:13
本帖最后由 yklstudent 于 2018-12-21 13:12 编辑

随便自己,怎么会怎么来中断中FIFO接收存储数据,再开个任务周期判断解析FIFO内接收的数据

一周热门 更多>