2016-11-18 94 views
0

我不明白为什么这个示例代码来自mcp_can库& &的接收到的可以使用0x1FFFFFFF的Id。什么样的比特会丢失?因为这条指令会丢失3个MSB位。Canbus 2.0b标识符

if((rxId & 0x80000000) == 0x80000000)  // Determine if ID is standard (11 bits) or extended (29 bits) 
    sprintf(msgString, "Extended ID: 0x%.8lX DLC: %1d Data:", (rxId & 0x1FFFFFFF), len); 
else 
sprintf(msgString, "Standard ID: 0x%.3lX  DLC: %1d Data:", rxId, len); 
+0

根据注释和状态,至少有一点'32'似乎包含某种形式的头信息。然而'0x1FFFFFFF'会给你注释中提到的29位。 –

回答

0

这只是因为2.0B是29位所以没有什么应该丢失