我使用cantools python包来解码canbus消息。我使用自己创建的dbc文件进行测试。我复制了一个示例文件。当我使用像419358976这样的can id时,我得到错误。但是对于像350这样的小罐id,它起作用了。cantools是否会因扩展帧ID而失败?我怎么才能让它工作?
我的扩展ID失败的代码如下:
db = cantools.database.load_file('.\\src\\test\\resources\\j1939.dbc')
print(db.decode_message(419358976,b'\xff\xff\xff\xc0\x0c\xff\xff\xff'))
错误:cantools.database.errors.Error: Standard frame id 0x18fee900 is more than 11 bits in message EEC1.
1条答案
按热度按时间ecfsfe2w1#
我找到了问题的答案。罐ID(如419358976)是扩展ID。因此,要将该idMap到dbc文件中的id,我需要将另一个32位十六进制数8000000添加到十六进制罐id。然后将结果十六进制数字转换为十进制数字,并将其用作dbc文件中的id字段。之后效果很好。上述错误消息在