日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

A2L变量地址抓取

發(fā)布時間:2023/12/31 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 A2L变量地址抓取 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在matlab中抓取A2L變量地址

在標(biāo)定時我們需要A2L文件提供變量信息,而通過MBD生成的A2L中變量的地址是空的,如下圖所示:

在matlab中有一個自帶的函數(shù) asap2post(ASAP2File, MAPFile); 能夠?qū)AP文件中變量的地址提取出來并替換掉上圖中對應(yīng)變量的空地址。其中兩個輸入?yún)?shù)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函數(shù)中的正則表達(dá)式做出相應(yīng)的修改才能成功抓取變量。下面我先簡要介紹一下函數(shù)內(nèi)容,了解下大概的運作流程,函數(shù)內(nèi)容如下

function asap2post(ASAP2File, MAPFile)if nargin~=2DAStudio.error('RTW:asap2:invalidInputParam',mfilename); endaddrPrefix = '0x0000 \/\* @ECU_Address@'; %前綴名 addrSuffix = '@ \*\/'; %后綴if exist(ASAP2File,'file')ASAP2FileString = fileread(ASAP2File);%將文本以txt格式讀取 elseDAStudio.error('RTW:asap2:UnableFindFile',ASAP2File); end% Extract contents of MAP file if exist(MAPFile,'file')MAPFileString = fileread(MAPFile); elseDAStudio.error('RTW:asap2:UnableFindFile',MAPFile); endMAPFileHash = getSymbolTable1(MAPFileString) ; newASAP2FileString = regexprep(ASAP2FileString,...[addrPrefix '(\S+)' addrSuffix], '${MAPFileHash($1)}'); %動態(tài)正則表達(dá)式% Write new content to original ASAP2 file fid = fopen(ASAP2File, 'w'); fprintf(fid,'%s',newASAP2FileString); fclose(fid);% ========================================================================= % SUBFUNCTIONS 子函數(shù)部分 % =========================================================================function MAPFileHash = getSymbolTable1(MAPFileString) pairs = regexp(MAPFileString, '\n\s*(\S+)\s+(0x[0-9a-fA-F]+)\W','tokens'); MAPFileHash = containers.Map;for i = 1:length(pairs)MAPFileHash(pairs{i}{1}) = pairs{i}{2};end

現(xiàn)在我們逐塊前進(jìn):

if nargin~=2DAStudio.error('RTW:asap2:invalidInputParam',mfilename); endaddrPrefix = '0x0000 \/\* @ECU_Address@'; %前綴名 addrSuffix = '@ \*\/'; %后綴if exist(ASAP2File,'file')ASAP2FileString = fileread(ASAP2File);%將文本以txt格式讀取 elseDAStudio.error('RTW:asap2:UnableFindFile',ASAP2File); end% Extract contents of MAP file if exist(MAPFile,'file')MAPFileString = fileread(MAPFile); elseDAStudio.error('RTW:asap2:UnableFindFile',MAPFile); end

這一部分沒什么可講的,首先判斷你輸入的參數(shù)是不是兩個,不是的話就報錯;
然后記下前綴名、后綴名,這倆會在正則表達(dá)式中用到,作為匹配的依據(jù),先暫時記下有這回事;然后兩個if意思是判斷兩個文件存不存在,存在則以txt格式讀取,否則報錯。

MAPFileHash = getSymbolTable1(MAPFileString) ;

接下來就是從map文件中提取變量名以及地址了,我們到其調(diào)用的子函數(shù)來看看他是怎么提取的:

% ========================================================================= % SUBFUNCTIONS 子函數(shù)部分 % =========================================================================function MAPFileHash = getSymbolTable1(MAPFileString) pairs = regexp(MAPFileString, '\n\s*(\S+)\s+0x(0x[0-9a-fA-F]+)\W','tokens'); MAPFileHash = containers.Map;for i = 1:length(pairs)MAPFileHash(pairs{i}{2}) = pairs{i}{};end

它通過正則表達(dá)式,將MAPFileString(也就是前面以txt讀出來的字符串)中的symbol以及地址按正則表達(dá)式中的規(guī)則匹配后存入元胞數(shù)組pairs,其中的每個元胞內(nèi)都含有兩個元素,也就是symbol和address,最后通過For循環(huán)將pairs中的內(nèi)容建立成一個數(shù)據(jù)類型為containers.Map的Hash表各部分內(nèi)容如下圖:


最后獲得一個包含Key-Value(鍵-值)的哈希表其內(nèi)容如下不能直接顯示

可以通過keys(MAPFileHash)查看其所有鍵或values(MAPFileHash);查看其所有值。

然后再將與初始空地址的A2L文件中相匹配的內(nèi)容(也就是框中的Name部分),用哈希表中的(Name)對應(yīng)行替換掉下圖中框住的內(nèi)容,具體怎么實現(xiàn)的在正則表達(dá)式一文詳解

newASAP2FileString = regexprep(ASAP2FileString,...[addrPrefix '(\S+)' addrSuffix], '${MAPFileHash($1)}'); % 動態(tài)正則表達(dá)式


所有地址替換完成后,將整個文本寫入ASAP2File,這樣就生成新的包含真實地址的A2L文件

fid = fopen(ASAP2File, 'w'); fprintf(fid,'%s',newASAP2FileString); fclose(fid);

最終A2L包含真實的地址信息:

以上內(nèi)容均為原創(chuàng),轉(zhuǎn)載請注明出處

總結(jié)

以上是生活随笔為你收集整理的A2L变量地址抓取的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 开心激情深爱 | 日韩精品一区在线观看 | 日韩 国产 欧美 | k8经典成人理伦片 | 女人的天堂av | 中文字幕被公侵犯的漂亮人妻 | 露脸丨91丨九色露脸 | 三级色网站| 天天在线观看 | 午夜精品久久99蜜桃的功能介绍 | 免费网站在线观看视频 | 风流老熟女一区二区三区 | 日韩一区三区 | 三级黄毛片 | 亚洲国产色图 | 亚洲精品色午夜无码专区日韩 | 蜜臀久久99精品久久久久宅男 | 日本一区二区三区欧美 | 三级自拍| 国产精品国产三级国产普通话蜜臀 | 日韩精品极品视频在线观看免费 | 狠狠躁18三区二区一区视频 | 正在播放木下凛凛xv99 | 天天干天天爽 | 肉色超薄丝袜脚交69xx | 欧洲女同同性吃奶 | 久久久久亚洲av成人人电影 | 成人欧美精品 | 手机在线永久免费观看av片 | 九色福利 | 亚洲天堂欧美在线 | 欧美福利第一页 | 三年大全国语中文版免费播放 | 色撸撸在线观看 | 日韩电影在线一区 | 国产乱淫av麻豆国产 | 日本大尺度做爰呻吟舌吻 | 亚洲欧美一区二区在线观看 | 精品人妻一区二区三区久久夜夜嗨 | 日本ww色| 番号动态图 | 91tv在线观看| 黄网免费视频 | 欧美精产国品一二三区 | 日日夜夜人人 | 午夜影院在线观看视频 | 久久精品国产亚洲av无码娇色 | 成人av一区二区在线观看 | 黄网www| 欧美高清不卡 | 91精品国产一区二区三竹菊影视 | 91超碰免费在线 | 午夜网站视频 | 久久精品7 | 荫蒂被男人添免费视频 | 日本www高清 | 色婷婷国产精品 | 日本视频免费在线 | 男人插女人免费视频 | 97国产视频| 丰满人妻一区二区三区四区 | 亚洲最大黄色网址 | 亚洲一区 | 久久久久久久久97 | 国产情侣一区二区三区 | 久久这里只有精品首页 | 香蕉久久夜色精品国产使用方法 | 国产精品免费视频一区二区 | 亚洲乱码国产乱码精品天美传媒 | 久久久亚洲成人 | 一级做a爱片 | 亚洲av无码一区二区二三区 | 国产中文字幕免费 | 国产精品影音先锋 | 欧美日韩精品一区二区三区视频播放 | 欧美乱码精品一区二区三区 | 久久国产精品无码一区二区 | 国产精品果冻传媒潘 | 国内外成人激情视频 | 日产精品一区二区 | 少妇丰满尤物大尺度写真 | 欧美在线视频二区 | 在线网站黄| 韩国av免费在线 | 在线观看羞羞漫画 | 91福利片| 高清无码一区二区在线观看吞精 | 国产18禁黄网站免费观看 | 九九99久久 | 午夜电影一区二区三区 | 日韩精品乱码 | 国产成人无码av在线播放dvd | 成人亚洲玉足脚交系列 | 人妻互换免费中文字幕 | sm调教羞耻姿势图片 | 亚洲激情久久久 | 国产污污视频在线观看 | 精品国产亚洲一区二区麻豆 | 免费在线观看网址 |