返回> 网站首页 

Can报文的字节序和解析

yoours2022-07-05 16:35:23 阅读 2431

简介一边听听音乐,一边写写文章。

以起始位位34,长度位12的信号来做演示来区分Motorola Forward MSB和Motorola Forward LSB的区别

一、Motorola Forward MSB(大端在前):

矩阵文档中起始位置则为MSB的起始位为34,往高字节借位。



填入填入0xB79,即101101111001,如下图:



二、Motorola Forward LSB(小端在前):
矩阵文档中起始位置则为LSB的起始位34,往低字节借位。


填入0xB79,即101101111001,如下图:


三、汽车CAN信号获取参考程序
// data 8字节数据,  len获取的有效数据位数, startBit有效数据起始位, buf获取的数据存贮空间
void GetSignal(BYTE* data, BYTE len, BYTE startBit, BYTE* buf)
{
        // 分解数据为二进制到数组
BYTE b[64];
for(int i=0;i<8;i++)
{
for(int j=0;j<8;j++)
{
b[i*8+j] = (data[i]>>j)&0x01;
}
}

        // 提取数据
for(int i=0,j=0;i<len;i++)
{
buf[i/8] |= b[startBit+j]<<(i%8);
if((startBit+j+1)%8==0)
{
startBit = ((startBit+j+1)/8 - 2) * 8;
j=0;
}else{
j++;
}
}
}

调用:
// 手刹状态 信号长度1 起始字节0 起始位0
GetSignal(data, 1, 0, retData);
strT.Format("手刹状态:%d\r\n", retData[0]==1?"拉起":"未拉");

微信小程序扫码登陆

文章评论

2431人参与,0条评论