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