问题描述
我对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可能有什么问题吗?!