使用DBC文件 CAN报文数据数据解析代码

int StartByteOffset = (startBit % 8);
int StartByteNumBits = (8-startBit % 8);
int EndByteOffset = EndBit % 8;
int StartByteIndex = startBit / 8;
int EndByteIndex = EndBit / 8;
int ByteIndexLen = EndByteIndex - StartByteIndex + 1;
uint32_t Value = 0;
uint8_t Temp = 0;

for(int i=0; i<ByteIndexLen; i++)
{
    if((StartByteOffset!=0) && i==0)//
    {
        Value |= data[StartByteIndex]>>StartByteOffset;
    }
    else if((i==0) && (StartByteIndex!=EndByteIndex))
    {
        Value |= data[StartByteIndex]>>StartByteOffset;
    }
    else if((i==0) && (StartByteIndex==EndByteIndex))
    {
        Value = (uint8_t)((uint8_t)(data[EndByteIndex]<<(7-EndByteOffset)))>>(7-EndByteOffset);
    }
    else if((EndByteOffset!=0) && (i==(ByteIndexLen-1)))
    {
        Temp = (uint8_t)((uint8_t)(data[EndByteIndex]<<(7-EndByteOffset)))>>(7-EndByteOffset);
        Value |= (Temp)<<((i-1)*8+(StartByteNumBits));
    }
    else
    {
        Value |= (uint32_t)(data[StartByteIndex+i]<<((i-1)*8+(StartByteNumBits)));
    }
    
}

return Value;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值