android CAN读取数据解析

应用场景

具有CAN总线口的android平板,需要读取CAN传过来的数据。

CAN了解

CAN是ISO国际标准化的串行通信协议,CAN技术规范包含A和B两部分。2.0A给出了曾在CAN技术规范版本1.2中定义的CAN报文格式,能提供11位地址;而2.0B给出了标准的和扩展的两种报文格式,提供29位地址。

CAN2.0B标准帧

CAN 标准帧信息为11个字节,包括两部分:信息和数据部分。前3个字节为信息部分。
Byte1(第一个字节)控制端:数据的字节及保留位的段。
Byte2-3 仲裁段:表示该帧优先级的段(即Message ID)。
Byte4-11 数据段:数据内容,可发送0-8个字节的数据。

Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
Byte1FFRTRxxxxDLC(数据长度)
Byte2Message ID
Byte3
Byte4数据1
Byte5数据2
Byte6数据3
Byte7数据4
Byte8数据5
Byte9数据6
Byte10数据7
Byte11数据8
字节1为帧信息。第7位(FF)表示帧格式,在标准帧中,FF=0;第6位(RTR)表示帧的类型,RTR=0表示为数据帧,RTR=1表示为远程帧;DLC表示在数据帧时实际的数据长度。

字节2、3为报文识别码,11位有效。
字节4~11为数据帧的实际数据,远程帧时无效。

CAN2.0B扩展帧

CAN 标准帧信息为13个字节,包括两部分:信息和数据部分。前5个字节为信息部分。
Byte1(第一个字节)控制端:数据的字节及保留位的段。
Byte2-3 仲裁段:表示该帧优先级的段(即Message ID)。
Byte4-11 数据段:数据内容,可发送0-8个字节的数据。

Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
Byte1FFRTRxxxxDLC(数据长度)
Byte2Message ID
Byte3
Byte4
Byte5
Byte6数据1
Byte7数据2
Byte8数据3
Byte9数据4
Byte10数据5
Byte11数据6
Byte12数据7
Byte13数据8
字节1为帧信息。第7位(FF)表示帧格式,在扩展帧中,FF=1;第6位(RTR)表示帧的类型,RTR=0表示为数据帧,RTR=1表示为远程帧;DLC 表示在数据帧时实际的数据长度。

字节2~5为报文识别码,其高29位有效。

字节6~13数据帧的实际数据,远程帧时无效。

3、 CAN读取解析

从输入流获取到字节数组,按图表中字节的含义可以获取到需要的参数信息。
我这里CAN一次读取获取的不只一帧数据,是多条帧掺杂在一起,所以做法是byte数组转成16进制字符串,和CAN协议里的Message ID比对,判断是否包含你要的MessageID,包含则获取他后边的8个字节数据,按照协议文档解析。

参考文章:https://www.cnblogs.com/fengliu-/p/9277165.html

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值