串口缓存满了以后,传入的数据是会更新还是丢失?

2015-02-101.8万
AI 快速预览详细 收起
本文讨论了在使用MEGA通过Serial3连接GPS模块时,串口接收缓存满后的数据处理机制。当串口接收缓存满后,新数据会从缓存的开头开始覆盖旧数据,而不是直接丢失。为了避免数据丢失,建议定期读取串口数据。文章还探讨了GPS模块发送缓存满的情况,指出如果发送缓存也满,新数据会替换掉发送缓存中的数据。


我用MEGA通过Serial3接了一个GPS模块,GPS模块总是在发送数据,可我不是每时每刻都在读取GPS信息。串口缓存满了以后,传入的数据是会更新还是丢失?图1
那么问题好像就出现了:
1、Serial3会不断地接受数据直到串口接收buffer填满,如果我仍然没有读出Serial3的值的话,那么GPS模块后来发送的数据到哪去了?是从Serial3串口接收buffer的开头开始覆盖掉原来的数据呢?还是这些数据就丢失不见了?
2、GPS模块在不断发送数据,但是Serial3串口接收buffer满了以后,如果不再接受GPS模块传进来的数据的话,GPS模块要发送的数据就会存在自己的发送buffer中,如果自己发送buffer也填满了话,再获取到的GPS信息是会替换掉发送buffer里面的数据呢?还是直接丢失了呢?

谢谢!!!



创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(3)
hnyzcj
hnyzcj
回头我也来看看
Youyou
Youyou
arduino的串口接收采用环形缓冲器,大小为64字节,当环形缓冲区爆满后,将直接丢弃数据,不再接收。
可看下arduino-1.0.5-r2\hardware\arduino\cores\arduino\HardwareSerial.cpp的源码。
云水尧
云水尧
作者
回复Youyou
新年快乐!谢谢你,我去好好研究研究看!
hnyzcj
hnyzcj
e ,GPS模块我还没有玩过。等我以后玩的时候再想你请教。
- 没有更多了 -