cantools.database获取消息的发送节点
cantools.database get the sending node of a message
我有一个程序,我需要知道消息的 CAN 节点,我从 DBC 获得。我是这样读 DBC 的:
db_input = cantools.db.load_file(dbc_path,database_format='dbc',encoding=None,frame_id_mask=None,strict=True,cache_dir=None)
我收到这样的特定消息:
print(db_input.messages[0])
输出为:
message('HOURS', 0x18fee59e, True, 8, None)
但是在 DBC 中,消息具有相应的 CAN 节点:
BO_ 2566841758 HOURS: 8 Sensor3
DBC语法是这样的:
BO_ <CAN-ID> <MessageName>: <MessageLength> <SendingNode>
有没有可能得到这样的东西?:
message('HOURS', 0x18fee59e, True, 8, Sensor3)
PS。我查看了具体的节点,输出是:
node('Sensor3', None)
可能 None 被误认为是节点输入,但我找不到 cantools.database 库的源代码中是否输入了节点
https://cantools.readthedocs.io/en/latest/_modules/cantools/database.html
根据 doc,您应该可以通过 .senders
:
获取发件人
print(db_input.messages[0].senders)
您正在打印的只是消息的表示形式(请参阅我的 link 中的 __repr__
)。该消息具有更多属性(_senders
等)
我有一个程序,我需要知道消息的 CAN 节点,我从 DBC 获得。我是这样读 DBC 的:
db_input = cantools.db.load_file(dbc_path,database_format='dbc',encoding=None,frame_id_mask=None,strict=True,cache_dir=None)
我收到这样的特定消息:
print(db_input.messages[0])
输出为:
message('HOURS', 0x18fee59e, True, 8, None)
但是在 DBC 中,消息具有相应的 CAN 节点:
BO_ 2566841758 HOURS: 8 Sensor3
DBC语法是这样的:
BO_ <CAN-ID> <MessageName>: <MessageLength> <SendingNode>
有没有可能得到这样的东西?:
message('HOURS', 0x18fee59e, True, 8, Sensor3)
PS。我查看了具体的节点,输出是:
node('Sensor3', None)
可能 None 被误认为是节点输入,但我找不到 cantools.database 库的源代码中是否输入了节点 https://cantools.readthedocs.io/en/latest/_modules/cantools/database.html
根据 doc,您应该可以通过 .senders
:
print(db_input.messages[0].senders)
您正在打印的只是消息的表示形式(请参阅我的 link 中的 __repr__
)。该消息具有更多属性(_senders
等)