天嵌 ARM开发社区

 找回密码
 注册
查看: 3317|回复: 2

串口数据缓存问题

[复制链接]
庸人自扰 发表于 2012-9-17 09:34:00 | 显示全部楼层 |阅读模式
请高手指教,我串口不停地在接收数据,数据有一定格式ff ff ff 01 02 03 04 05 。。。fe fe结尾,开头是ff ff ff结尾时fe fe ,我需要不停地接收,是别的硬件发给我的,我没法控制它什么时候发给我或者发给我的频率,平时很慢,但是有情况的时候就是卡卡一直给我发,我需要用一个缓存来接收这些数据,然后一边接收一边处理,处理完了的数据,需要在缓存里删除,来控制缓存不要溢出,但是比方说,我收到1字节数据我就放缓存里,我用的可能笨,我就是定义了一个数组,256字节,判断到ff ff ff我就开始往里放,count++然后再放直到fe fe我就把接收标志置1,说明收到了一个完整帧,我主函数里会开始处理缓存里的前count数据,这个时候我需要继续接收,防止后续数据丢了,当我处理完第一个完整的数据后,回头要继续处理了,我怎么办,我需要把我已经处理完的数据在缓存中删除,只留没处理的,这样缓存就一直有地方接收新数据,我是这样想的,不知道对不对,我想到了,可是不知道怎么操纵,我删除前面的吧count不对了后面没法处理了,请高手指教我这个新手
TQ-lkp 发表于 2012-9-17 11:57:23 | 显示全部楼层
本帖最后由 TQ-lkp 于 2012-9-17 11:57 编辑

收到正确的就放到一个数组里面或者队列之类的数据里面
 楼主| 庸人自扰 发表于 2012-9-17 16:09:55 | 显示全部楼层
TQ-lkp 发表于 2012-9-17 11:57
收到正确的就放到一个数组里面或者队列之类的数据里面

你在详细点么,我现在就是放到数组里,收到一个字节就放里,当判断完是一个完整帧以后,我也不能在中断程序里直接处理啊,那样不是耽误继续收数据了么,我只能判断是结尾fe fe了,就置位,证明有一帧正确的数据,然后再主函数里,去处理数据的数据,前几个数据肯定是一帧,可是我主函数处理的时候,串口再继续收数据啊,就是数组在继续存,我处理完一帧以后,接收的数组如何把我处理完这帧删除?我以前是当判断到帧尾,直接在中断函数里就去调用处理函数,处理完就直接删除数组内容,可是因为有这个处理函数,我有一定时间没有开中断,造成后来的数据丢失了。有好解决方法么。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-6 15:18 , Processed in 1.046869 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表