如何处理庞大库中的重叠信号
拥有一个具有两个重叠信号(位置 8 和 32)的多路复用消息的 CANBUS 数据库记录,如下所示:
[A0AT]
Len=8
CycleTime=1000
Mux=_10 0,8 0Ah
Var=Signal00 unsigned 8,7 /u:°C /o:-40 /max:80 /e:Signal00
Var=Signal01 bit 15,1 /e:Signal01
Var=Signal02 unsigned 16,2
Var=Signal03 unsigned 18,2
Var=Signal04 unsigned 28,4 /e:Signal04
Var=Signal05 unsigned 24,2 /e:Signal05
Var=Signal06 unsigned 32,7 /u:°C /o:-40 /e:Signal06
Var=Signal07 unsigned 56,8 /u:°C /e:Signal07
Var=Signal08 unsigned 40,8 /u:°C /o:-40 /e:Signal08
Var=Signal09 unsigned 48,8 /u:°C /o:-40 /e:Signal09
Var=Signal10 unsigned 26,2 /e:Signal10
Var=Signal11 bit 39,1
Var=Signal12 unsigned 8,7 /u:°F /o:32
Var=Signal13 unsigned 32,7 /u:°F /o:32 /e:Signal13
Var=Signal14 unsigned 20,4 /e:Signal14
但我来自设备的消息是:
0.124000 1 1BBBBBB0x Rx d 8 0A 3E F0 FF FF FF FF 00
cantools 库的简单解码
dced_msg = db.decode_message(mesg.arbitration_id, mesg.data)
由于消息中缺少数据,
失败。有没有办法使用 cantools 库并正确解码此类消息(即用正确的值填充这些重复的信号)?
或者还有其他可以处理重叠信号的can总线通信库吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这个问题已经在
cantools
repo上提出: https:https:/// github.com/cantools/cantools/issues/205不幸的是,该图书馆目前不支持重叠信号,并且可能永远不会。
您可以尝试使用 canmatrix 并用 can_decoder 。我还没有测试过。
This issue has already been raised on the
cantools
repo: https://github.com/cantools/cantools/issues/205Unfortunately the library doesn't support overlapping signals at the moment and probably never will.
You could try to convert your .sym files to .dbc using canmatrix and decode your can signals with can_decoder. I haven't tested it though.