0

一般来说,我可能对 asammdf 有一些误解,但我不太确定如何解码 CAN 帧。

假设我有一个定义了相关消息的 dbc,我可以使用它mdf.extract_bus_logging()来解析信号,但我不确定从那里做什么。

我正在发送一个原始有效负载 + 可以帧 ID,我认为我可以使用 cantools 解析原始数据(然后将该数据传递到 asammdf 信号),但感觉这里有某种程度的支持asamdf.

我在这里有一个示例,符合我想要做的事情(使用此处的 cantools 示例中的 motohawk.dbc 文件https://cantools.readthedocs.io/en/latest/

from asammdf import MDF
import cantools

filename = "~/mdf_dbc_play/tmp.dbc"
db = cantools.database.load_file(filename)

msg_bytes = [0,0,0xff,0x01,0x02,0x03,0x04,0x05]
# Temporary bogus timestamp
timestamps = [0.1]

# Use cantools to decode the raw bytes
msg = db.get_message_by_name("EEC1")
unpacked_signals = msg.decode(msg_bytes)

# Using version 3.10 just in case we have some versioning issues with old tooling.

with asammdf.MDF(version='3.10') as mdf:
    # I assume there's some way of getting the actual value we care about from an unpacked message.
    samples = unpacked_signals.get_values()

    sig = asammdf.Signal(name="EEC1", samples=samples, timestamps=timestamps)
    mdf.append(sig)
    mdf.save("~/mdf_dbc_play/output.mdf")


4

1 回答 1

0

要将 CAN 流量记录到 MF4 文件,您可以尝试以下代码python-can

https://github.com/hardbyte/python-can/blob/mf4-io/can/io/mf4.py

于 2020-12-18T07:55:55.820 回答