c语言错误计数超过100,我现在在做2292的can,如何实现当can1总线发现错误时切换can2通信的程序?...

满意答案

这个问题我觉得你应该和CAN总线协议分开,因为CAN总线硬件链路层协议和数据链路层协议都是标准的,就是CAN2.0A和CAN2.0B协议,我觉得你应该是要定义上层应用的协议,专门针对你的通讯信息的协议,比如说你要传输“设置量程上下限,报警上下限,绘制历史和实时曲线”等信息的协议,如果是这样的话,那就简单了,解释一下:协议就是通讯两端对话的语言,你必须有至少两个CAN节点,然后通过线路将其连接(就是一对差分线),然后就可以利用CAN底层协议互相通讯,而你要定的协议就是定义CAN接收的什么数据代表什么意思,一般来说,一个协议要包括头和尾及中间的内容,如当接收到一帧的第一个字节(CAN协议一帧可以传送8个字节)为0xfe时认为这是你的一个协议包的开始标志字节,一个协议包比如定义为8个字节,最后一个字节为0xEF为结束字节标志,这样当你的CAN接收到第一个字节为0xfe最后一个字节为0xef的帧就是你需要的协议包,你可以定义第二个字节表示标志此包传输意义的字节,如为0x01表示“设置量程上下限”为0x02表示“报警上下限”等等,其他字节可以设置相应的需要设置的值。

如果是一个复杂的协议的话,可以用多个帧表示一个你的协议包,而且一般需要加上一个或几个字节的校验字节,以验证是否传输正确。

10分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值