最近串口接收想做一个双缓冲,也是从网上学习来的,说是乒乓缓冲。buff1存满了存到buff2,然后可以处理buff1。然后我有几个疑问:
1.是不是一定要存满了再处理?
2.如果一个buff是存满了再处理,那么如果每一条报文长度不固定,会出现一条报文的前半段在buff1,后半段要存到buff2?怎么办?
然后我就想到了另一种环形缓冲区,好像还不错。
我现在的nbiot通信,在中断内接收数据,一个报文有时候会分两段收到,会进两次中断,如果我在出中断之前置标志位,表示有消息,在主函数进行处理,就会对半段数据进行处理,然后清零,就出错了。
所以我现在只能在标志位触发后,再等一会儿,delay一会儿,如果还有数据就会进入中断继续接收。delay后再处理,倒也没什么问题,但是总觉得方法太土。
请问这个数据收发和处理有什么好方法,求指点。@dirtwillfly @m564522634 @xyz549040622
|