一种高效的串口数据包接收方式
时间:10-02
整理:3721RD
点击:
大概思路:
1.要构建一个结构体用于记录串口接收需要用到的数据
2.初始化硬件,中断接收,初始化上面那个结构体,给串口接收动态分配一个缓存区
3.每次串口接收中断将收到的数据放入缓存区,并对计时清零
4.用定时器中断检查是否超时,超时则认为一包数据已接收完成,发送消息以便中断返回后处理,再为串口接收申请另一块缓存空间,这样就可以马上继续接收下一包数据了
。
这样做的好处时:
1.对数据包的格式(固定包头,包尾。长度等)没有任何限制,只要求数据包之间的时间间隔大于数据包内每个字节间的间隔(这是自然的传输情况)
2.不像其他一些缓存式的接收方式需要缓存间的二次拷贝
3.所有处理都是在中断中进行的,没有延时,CPU效率很高,处理及时,能有效避免数据包丢失
。
具体程序读者可以根据思路自己编写,也可以参考本人已实现的源码。具体程序在另一篇帖子的附件“MsgOS-51”里有源码
地址:http://bbs.elecfans.com/jishu_411932_1_1.html