将原始MF4数据与dbc连接-asammdf

问题描述

我对python很陌生。对于我的硕士学位,我需要使用asammdf提取一些MF4数据信号。我只有原始的MF4数据和da dbc。我如何将MF4数据与dbc连接并将所需的信号保存在变量或数组中。 我已经尝试过类似的事情:

import mdfreader
import os
import asammdf 
channel_list=['ENSTO_AVL_I','ENSTO_AVL_U','ENSTO_AVL_TEMP','ENSTO_AVL_SOC']
dir_dbc = r'G:\TS-S2\Studenten\S21\Florian Greimel\Masterarbeit\Data_mf4'
dir_mdfs = r'G:\TS-S2\Studenten\S21\Florian Greimel\Masterarbeit\Data_mf4\MF4_mitDBC'
srcdir = dir_mdfs
dbc = os.path.join(dir_dbc,'20180829_SP2021_Infra_CAN.dbc')
for filename in os.listdir(srcdir):
    print(filename)
    if filename.lower().endswith('.mf4'):
        dat = asammdf.MDF4(os.path.join(srcdir,filename))
        sig = dat.get_can_signal('ENSTO_AVL_SOC',(os.path.join(dir_dbc,'20180829_SP2021_Infra_CAN.dbc'))

非常感谢,暴民

解决方法

您应该只使用MDF类(包含MDF3或MDF4方法,以及顶部的一些其他方法)。有了它,您可以使用extract_can_logging https://asammdf.readthedocs.io/en/latest/api.html#asammdf.mdf.MDF.extract_can_logging

,

感谢您的帮助。 现在我有下一个问题。

此错误现在出现。

runfile('G:/ TS-S2 / Studenten / S21 / Florian Greimel / Masterarbeit / Code / mf4_asammdf.py',wdir ='G:/ TS-S2 / Studenten / S21 / Florian Greimel / Masterarbeit / Code' ) 20180829_SP2021_Infra_CAN.dbc 80SOC_m20_800W.mf4 追溯(最近一次通话):

第19行中的文件“ G:\ TS-S2 \ Studenten \ S21 \ Florian Greimel \ Masterarbeit \ Code \ mf4_asammdf.py” dat = asammdf.MDF(os.path.join(dir_mdfs,文件名))

初始化中的文件“ C:\ Users \ fgreimel \ Anaconda3 \ lib \ site-packages \ asammdf \ mdf.py”,第126行 self._mdf = MDF4(name,** kwargs)

init 中的第248行“ C:\ Users \ fgreimel \ Anaconda3 \ lib \ site-packages \ asammdf \ blocks \ mdf_v4.py” self._read(mapped = True)

文件“ C:\ Users \ fgreimel \ Anaconda3 \ lib \ site-packages \ asammdf \ blocks \ mdf_v4.py”,第482行,_read _sig = self.get(“ CAN_DataFrame”,group = i,ignore_invalidation_bits = True)

get中的文件“ C:\ Users \ fgreimel \ Anaconda3 \ lib \ site-packages \ asammdf \ blocks \ mdf_v4.py”,行3822 gp_nr,ch_nr = self._validate_channel_selection(

文件“ C:\ Users \ fgreimel \ Anaconda3 \ lib \ site-packages \ asammdf \ blocks \ mdf_v4.py”,行1951,在_validate_channel_selection中 引发MdfException(message)

MdfException:在组5中找不到通道“ CAN_DataFrame”

我的asammdf lib可能有什么问题吗?!