通信同步对发送接收处理

很明显,这是一篇比较有实际用途的文章。

所谓同步,比如对CANopen方式,就是主站发送一帧,所有从站都返回一帧。有时候协议并没有对返回这帧的时间做出规定,时间上规定的即便很严格也很难具有操作性,除非这几个从站都是一个人所编写程序,否则大家各种水平参差不齐。很难完成对时间的准确把握。所以索性不对时间作出规定。只是规定了一个窗口时间。在该时间内作出反馈即可。所以这对主站的接收能力提出很大的考验。刚学单片机,一般我们都知道,中断服务程序要尽可能短小。这样才能在尽可能短的时间内对中断需求做出响应。

但是在一般情况下,也用不到太短的中断服务程序,稍微长一点也是可以满足要求,于是建立一个大的结构体,结构体内容有各种规定好的帧,一旦收到一帧与结构体中的帧的ID号相同,就把内容复制到结构体成员中。这种方法大部分情况行得通。进一步,可以对ID进行分类,这样收到的帧属于哪个类别,就能更快的找到自己的位置(但是这种方式大部分情况下通用性不好,不同的需求可能有不同的划分方式)。上面这种在中断服务程序里面查询自己位置的方法也是不太耗费时间,但是当成员很多的时候或者外部有大量的帧想要进入中断服务程序,那么就耗费时间比较多了。因此在这种情况下,可以考虑弄一个结构体数组,把头和尾连接起来构成一个环。然后在任务区进行建立一个大的结构体,结构体内容有各种规定好的帧,一旦收到一帧与结构体中的帧的ID号相同,就把内容复制到结构体成员中“”。感觉这是个很好的思路。比较具有通用性。

今天想到这个方法,就赶快记录了下来。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值