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