创建要由 J1939 DBC 解码的 MF4 - asammdf

问题描述

我正在尝试创建一个由“J1939.dbc”解码的 MF4 文件,就像 CSS electronics

生成示例文件代码是这样的:

jupyter

上图:

1) 生成文件是这个

2) CAN 日志记录被禁用 - 当我使用来自 CSS electronics文件时,“CAN 日志记录”被启用 -

enter image description here

但是如果尝试手动生成解码,它会返回一个空白文件

pyenv

可能需要指定 ID 和 DataByte 列进行解码,但我尝试了很多方法但都不起作用。

我能做什么?

解决方法

总线记录的元数据也必须添加到新的通道组中:

from asammdf import MDF,SUPPORTED_VERSIONS,Signal
import numpy as np
from asammdf.blocks.source_utils import Source

sigs = []
mdf = MDF()

samples = [
    np.array([1,1,1],dtype=np.uint32),np.array([217056256,217056256,217056256],np.array([1,np.ones(5,dtype=np.dtype('(8,)u1'))*111,dtype=np.uint32)
]

types = [('CAN_DataFrame.BusChannel','u1'),('CAN_DataFrame.ID','<u4'),('CAN_DataFrame.IDE',('CAN_DataFrame.DLC',('CAN_DataFrame.DataLength',('CAN_DataFrame.DataBytes','u1',(8,)),('CAN_DataFrame.Dir',('CAN_DataFrame.EDL',('CAN_DataFrame.BRS','u1')]

t = np.arange(5,dtype=np.float64)

sig = Signal(
    np.core.records.fromarrays(samples,dtype=np.dtype(types)),t+10,name='Channel_structure_composition',comment='Structure channel composition',source=Source(
        source_type=Source.SOURCE_BUS,bus_type=Source.BUS_TYPE_CAN,name="CAN bus",path="CAN bus",comment="",)
)
sigs.append(sig)

mdf.append(sigs,comment='arrays',common_timebase=True)

mdf.save('demo.mf4',overwrite=True)
print('save')