曾桂芬
(上汽通用五菱汽車股份有限公司,廣西 柳州 545007)
在汽車網(wǎng)絡(luò)測試中,往往需要工作人員將通信矩陣的表格文件制作成DBC數(shù)據(jù)庫文件。而這一過程往往會耗費工作人員較長的時間做文件轉(zhuǎn)換處理,因此會降低數(shù)據(jù)轉(zhuǎn)換效率。
針對上述問題,本文提出一種方法能通過自動讀取表格文件中的通信矩陣數(shù)據(jù)來寫入DBC文件,從而節(jié)省時間,加快數(shù)據(jù)轉(zhuǎn)換速率,由此提高數(shù)據(jù)轉(zhuǎn)換效率。其設(shè)置了多個功能窗口,便于用戶的理解與使用;自動化水平高,一鍵式轉(zhuǎn)換,轉(zhuǎn)換過程穩(wěn)、準(zhǔn)、快。
該方法主要包括:通過整理建立汽車電子電器架構(gòu)設(shè)計中通信層設(shè)計工程師需求;整理分析通信矩陣模板用于網(wǎng)絡(luò)通信設(shè)計;運用C++程序編寫解析算法解析通信矩陣,并編寫算法按照DBC 標(biāo)準(zhǔn)格式生成DBC文件。具體實現(xiàn)方法如圖1所示。
1)在Excel中確定通信矩陣模板,填寫基本信息。
2)調(diào)用POI函數(shù)解析Excel。新建工程和類,并將POI組件導(dǎo)入到工程中,并準(zhǔn)備一個Excel文件,放置在D盤的根目錄。打開Excel文件,獲取表格信息,循環(huán)讀取表格并輸出其內(nèi)容。
3)通過自己對網(wǎng)絡(luò)測試的深度研究,整理出一張錯誤檢索表,包括70多項檢索內(nèi)容,使得系統(tǒng)通過檢索能自動識別填寫的Excel中存在的錯誤。比如檢查對象為報文類型,檢查內(nèi)容為報文類型是否為空,報文類型是否正確(報文類型只能是Normal、NM、Diag),模版對應(yīng)的位置是否正確,錯誤級別是錯誤還是警告。
4)建立鏈表結(jié)構(gòu)存儲Excel數(shù)據(jù)項。建立信號類、報文類、節(jié)點類用于存放通信矩陣中的信息屬性。①信號類:信號名稱、信號描述、開始字節(jié)、開始位、信號的發(fā)送類型、位的長度、數(shù)據(jù)類型、參數(shù)因子、偏移量、物理的最大值、物理的最小值、總線值最大值、總線值最小值、初始值、無效值、非使能值、單位、信號值描述、接收節(jié)點、BM的ID、車輛級別。②報文類:報文名字、報文類型、報文ID、報文的發(fā)送類型、報文長度、報文的發(fā)送節(jié)點、報文的描述、報文周期時間、延遲時間、個數(shù)等。③節(jié)點類:名字、描述、節(jié)點備注,建立報文鏈表、信號鏈表、節(jié)點鏈表,鏈表中存放通信矩陣內(nèi)容。
5)根據(jù)vector設(shè)計的DBC文件格式對鏈表結(jié)構(gòu)中的數(shù)據(jù)進行解析,得到解析結(jié)果。
6)按文件格式填寫DBC文件。
通信矩陣模板為Excel表格文件,通信矩陣模板中具有固定列表頭,如:報文名稱、報文類型、報文標(biāo)識符、報文發(fā)送類型、報文周期時間、報文長度、報文描述、信號名稱、信號排列格式、信號起始字節(jié)、信號起始位、信號發(fā)送類型、信號長度、信號數(shù)據(jù)類型、信號精度、信號偏移量、信號物理最小值、信號物理最大值、信號總線最大值、信號總線初始值、信號總線無效值、信號總線非使能值、信號值描述、報文發(fā)送的快速周期、報文快速發(fā)送的次數(shù)、報文延時時間、發(fā)送節(jié)點、接收節(jié)點等表頭,而表頭下有相應(yīng)的內(nèi)容,如圖2所示。通信矩陣的數(shù)據(jù),是由用戶或工作人員根據(jù)需求填寫的基本信息,如報文名稱M5G、報文標(biāo)識符0XC000等。
通信矩陣模板可以從預(yù)先設(shè)置好的包含多種模板的數(shù)據(jù)庫系統(tǒng)中下載得到,之后由用戶根據(jù)需求在模板中填寫數(shù)據(jù)信息,從而得到包含通信矩陣數(shù)據(jù)的表格文件。
本方法中可以利用POI(Apache PO)讀取表格文件中的通信矩陣數(shù)據(jù)。由此,調(diào)用POI函數(shù)對.xls或.xlsx格式檔案讀和寫的功能,通過新建工程和類,從而將POI組件導(dǎo)入到工程中,再將表格文件放置到合適的存儲目錄下,從而打開該表格文件,實現(xiàn)對表格文件中的通信矩陣數(shù)據(jù)的讀取,并輸出讀取出的通信矩陣數(shù)據(jù)。
圖2 通信矩陣
對通信矩陣數(shù)據(jù)進行解析,是指對通信矩陣數(shù)據(jù)中的信息進行解析來得到能夠?qū)懭氲紻BC文件中的內(nèi)容。具體的,本研究中可基于預(yù)設(shè)的DBC文件格式對通信矩陣數(shù)據(jù)進行解析,從而得到解析結(jié)果。該解析結(jié)果中為DBC文件格式對應(yīng)的信息內(nèi)容。
同時可以利用通過網(wǎng)絡(luò)測試研究所整理出的錯誤檢索表(圖3),來自動識別表格文件如Excel中存在的錯誤。
在檢測出錯誤之后,發(fā)送提示信息給用戶,由用戶進行修改操作,本實施例在接收用戶的修改操作之后,對相應(yīng)的數(shù)據(jù)進行更正,從而提高表格文件的準(zhǔn)確率,進而提高轉(zhuǎn)換后得到的DBC文件的準(zhǔn)確性。
圖3 解析錯誤表
按照DBC文件格式(圖4),將解析結(jié)果中的數(shù)據(jù)寫入到生成的DBC文件中,從而得到表格文件轉(zhuǎn)換后的DBC文件,可以用于后續(xù)測試等應(yīng)用。
首先,建立鏈表結(jié)構(gòu)。鏈表結(jié)構(gòu)中包括至少一個鏈表類別,鏈表類別包括至少一個類別屬性,類別屬性具有屬性值,在新建的鏈表結(jié)構(gòu)中類別屬性的屬性值為空。
通過建立鏈表結(jié)構(gòu),包含報文鏈表、信號鏈表、節(jié)點鏈表等多個鏈表類別,用于存放通信矩陣數(shù)據(jù)中的相應(yīng)內(nèi)容。
將通信矩陣讀取出的數(shù)據(jù)存儲在鏈表結(jié)構(gòu)中。其中,通信矩陣數(shù)據(jù)中包括至少一個信息類別,信息類別包括至少一個信息屬性,信息屬性具有屬性值。通信矩陣數(shù)據(jù)中信息類別與鏈表結(jié)構(gòu)中鏈表類別相對應(yīng),將信息類別中的信息屬性與鏈表類別中的類別屬性相對應(yīng),將信息屬性的屬性值與類別屬性的屬性值相對應(yīng),從而將通信矩陣數(shù)據(jù)中的信息內(nèi)容按照以上的對應(yīng)關(guān)系存儲到鏈表結(jié)構(gòu)中。
圖4 DBC 文件圖
基于預(yù)設(shè)的DBC文件格式對鏈表結(jié)構(gòu)中的通信矩陣數(shù)據(jù)進行解析,從而得到解析結(jié)果,進而按照DBC文件格式,將解析結(jié)果中的數(shù)據(jù)寫入到生成的DBC文件中,完成Excel表格文件到DBC文件的轉(zhuǎn)換。
研究通過建立鏈表結(jié)構(gòu)來存儲通信矩陣數(shù)據(jù),再進行數(shù)據(jù)解析,從而達(dá)到將通信矩陣數(shù)據(jù)按照類別拆分的目的,由此經(jīng)過數(shù)據(jù)轉(zhuǎn)換后,能夠得到拆分的DBC文件,無需單獨進行數(shù)據(jù)庫拆分操作,進一步提高了數(shù)據(jù)轉(zhuǎn)換效率。
本方法創(chuàng)新點在于發(fā)明了一種快速通過Excel文件創(chuàng)建DBC數(shù)據(jù)庫的方法。通過整理建立汽車電子電器架構(gòu)設(shè)計中通信層設(shè)計工程師需求,整理分析通信矩陣模板用于網(wǎng)絡(luò)通信設(shè)計,運用C ++程序編寫解析算法解析通信矩陣,并編寫算法按照DBC 標(biāo)準(zhǔn)格式生成DBC文件,減少DBC文件建立時間。如圖5~圖7所示。
圖5 DBC部分文件圖
圖6 通信矩陣部分圖
本方法對通信矩陣的格式規(guī)范,用代碼分析其內(nèi)容,自動生成汽車測試所需要的通信數(shù)據(jù)庫。快速完成通信矩陣與DBC數(shù)據(jù)庫之間的轉(zhuǎn)換功能的運用,可以把工程師從繁瑣復(fù)雜的數(shù)據(jù)庫建立工作中解脫出來,工程師只需要填寫Excel的通信矩陣即可進行數(shù)據(jù)庫的創(chuàng)建。
圖7 Excel to DBC過程圖
通信矩陣轉(zhuǎn)DBC數(shù)據(jù)庫完成通信矩陣的錯誤檢測功能,錯誤檢測功能會根據(jù)DBC數(shù)據(jù)庫的相應(yīng)規(guī)則進行通信矩陣的檢測,并指導(dǎo)工程師完成通信矩陣的修改,此功能保證了通信矩陣可以正確快速地轉(zhuǎn)化為數(shù)據(jù)庫。數(shù)據(jù)庫的拆分還可以幫助工程師快速拆分不同節(jié)點的接收信號,大大提高了工作效率。