在matlab中抓取A2L变量地址
在标定时我们需要A2L文件提供变量信息,而通过MBD生成的A2L中变量的地址是空的,如下图所示:
在matlab中有一个自带的函数 asap2post(ASAP2File, MAPFile); 能够将MAP文件中变量的地址提取出来并替换掉上图中对应变量的空地址。其中两个输入参数ASAP2File、MAPFile分别为a2l和map文件的文件路径:
ASAP2File = 'C:\Users\Luo\Desktop\Grab_Variable.a2l';
MAPFile = 'C:\Users\Luo\Desktop\ADC.map';
asap2post(ASAP2File, MAPFile);
然而并不是有了两个文件上来就能直接成功生成最终拥有地址的A2L文件,因为不同编译器生成的MAP文件有所不同,需要对asap2post函数中的正则表达式做出相应的修改才能成功抓取变量。下面我先简要介绍一下函数内容,了解下大概的运作流程,函数内容如下
function asap2post(ASAP2File, MAPFile)
if nargin~=2
DAStudio.error('RTW:asap2:invalidInputParam',mfilename);
end
addrPrefix = '0x0000 \/\* @ECU_Address@'; %前缀名
addrSuffix = '@ \*\/'; %后缀
if exist(ASAP2File,'file')
ASAP2FileString = fileread(ASAP2File);%将文本以txt格式读取
else
DAStudio.error('RTW:asap2:UnableFindFile',ASAP2File);
end
% Extract contents of MAP file
if exist(MAPFile,'file')
MAPFileString = fileread(MAPFile);
else
DAStudio.error('RTW:asap2:UnableFindFile',MAPFile);
end
MAPFileHash = getSymbolTable1(MAPFileString) ;
newASAP2FileString = regexprep(ASAP2FileString,