本申請提供一種數據結構轉換方法、車載消息傳輸方法、設備及介質,包括根據第一數據變更處理規則對C語言源代碼頭文件進行數據變更處理以輸出第一頭文件列表;合并第一頭文件列表中重復子孫數據結構頭文件以生成第二頭文件列表,以及將第二頭文件列表中包含的主數據結構頭文件和子孫數據結構頭文件定義的數據結構寫入待定數據緩存結構;根據第二數據變更處理規則對待定數據緩存結構中包含的數據結構進行數據變更處理以生成符合C/C++數據結構要求的目標數據結構;在C語言源代碼頭文件中寫入目標數據結構以生成C/C++引用頭文件,將C/C++引用頭文件寫入hpp文件以生成純C/C++數據結構的目標數據結構文件;實現數據結構轉換。
【技術實現步驟摘要】
本申請涉及計算機,特別涉及一種數據結構轉換方法、車載消息傳輸方法、設備及介質。
技術介紹
1、為了在智慧交通場景中實現車路協同,需對v2x(vehicle?to?everything,車用無線通信技術)技術與adas(advanced?drivingassistance?system,高級駕駛輔助系統)技術或智能座艙域技術進行融合發展;而v2x技術其自身存在標準及數據結構定義其消息及傳輸層專用的短消息協議(dedicated?short?message?protocol,dsmp);v2x消息則是基于抽象語法標記(abstract?syntax?notation?one,asn1)生成,進而使用asn1c編譯器對v2x對應的asn1c消息定義源碼進行編譯,以生成基于asn1c引擎的c語言的數據結構。
2、通常情況下,v2x?box在軟件設計與集成時,其協議棧和應用程序是用基于asn1c引擎的c語言的數據結構來傳遞v2x消息;但是如果v2x?box與汽車其他ecu(electroniccontrol?unit,電子控制單元),如adas和智能座艙域進行融合后,各個軟件模塊與v2x?box上的協議棧與應用程序相互傳遞asn1c的數據結構的v2x消息時,就會存在軟件設計和集成的問題,例如adas和智能座艙域不支持asn1c引擎的問題,即基于asn1c引擎c語言數據結構體不具體軟件設計與集成通用性的問題。
3、因此亟需一種能夠自動轉換asn1c數據結構為純c/c++數據結構的數據結構轉換方法以解決上述技術問題。</p>
技術實現思路
1、基于此,有必要針對上述技術問題,提供一種數據結構轉換方法、車載消息傳輸方法以及設備,以提高車載v2x模塊生成的車載消息在傳遞時的通用性及穩定性。
2、第一方面,本申請提供一種數據結構轉換方法,其特征在于,所述方法包括:
3、根據預設的第一數據變更處理規則對c語言源代碼頭文件進行數據變更處理以輸出第一頭文件列表,所述第一頭文件列表包含所述c語言源代碼頭文件對應的主數據結構頭文件和子孫數據結構頭文件,其中,所述c語言源代碼頭文件為通過抽象語法標記編譯器編譯生成的;
4、合并所述第一頭文件列表中重復的子孫數據結構頭文件以生成第二頭文件列表,以及將所述第二頭文件列表中包含的主數據結構頭文件和子孫數據結構頭文件定義的數據結構寫入待定數據緩存結構中;
5、根據預設的第二數據變更處理規則對所述待定數據緩存結構中包含的數據結構進行數據變更處理以生成符合c/c++數據結構要求的目標數據結構;
6、在所述c語言源代碼頭文件中寫入所述目標數據結構以生成c/c++引用頭文件,以及將所述c/c++引用頭文件寫入hpp文件以生成純c/c++數據結構的目標數據結構文件。
7、在一些實施例中,所述根據預設的第一數據變更處理規則對所述c語言源代碼頭文件進行數據變更處理以輸出第一頭文件列表,包括:
8、執行主數據結構變更操作,所述主數據結構變更操作包括:變更所述c語言源代碼頭文件中與所述抽象語法標記編譯器綁定的待變更數據類型為與c/c++數據結構要求匹配的目標數據類型,生成與所述目標數據類型對應的待處理頭文件名稱并輸出與所述待處理頭文件名稱對應的主數據結構頭文件;
9、執行子孫數據結構變更操作,所述執行子孫數據結構變更操作包括:檢查是否存在與所述待處理頭文件名稱對應的待處理頭文件;
10、響應于檢查到所述待處理頭文件存在,變更所述待處理頭文件中與所述抽象語法標記編譯器綁定的待變更數據類型為與所述c/c++數據結構要求匹配的新的目標數據類型,生成與所述目標數據類型對應的新的待處理頭文件名稱并輸出與所述待處理頭文件名稱對應的子孫數據結構頭文件;
11、遞歸執行所述子孫數據結構變更操作直至不存在新的待處理頭文件名稱生成。
12、在一些實施例中,所述變更所述c語言源代碼頭文件中與所述抽象語法標記編譯器綁定的待變更數據類型為與c/c++數據結構要求匹配的目標數據類型之前,所述方法包括:
13、解析目標頭文件生成數據類型名稱,其中,所述目標頭文件包括所述c語言源代碼頭文件和所述待處理頭文件;
14、對所述目標頭文件中的代碼行執行去噪處理操作以獲取目標頭文件中的有效行,并將所述有效行寫入待定數據緩存結構中,其中,噪音包括空格、注釋語句、條件語句以及預設關鍵詞所在行;
15、響應于讀取到所述目標頭文件中包含所述數據類型名稱的代碼行,變更所述待定數據緩存結構中包含的代碼行中與所述抽象語法標記編譯器綁定的待變更數據類型為與c/c++數據結構要求匹配的目標數據類型。
16、在一些實施例中,所述變更所述c語言源代碼頭文件中與所述抽象語法標記編譯器綁定的待變更數據類型為與c/c++數據結構要求匹配的目標數據類型之前,所述方法包括:
17、解析目標頭文件生成數據類型名稱,其中,所述目標頭文件包括所述c語言源代碼頭文件和所述待處理頭文件;
18、對所述目標頭文件中的代碼行執行去噪處理操作以獲取目標頭文件中的有效行,并將所述有效行寫入待定數據緩存結構中,其中,噪音包括空格、注釋語句、條件語句以及預設關鍵詞所在行;
19、響應于讀取到所述目標頭文件中包含所述數據類型名稱的代碼行,變更所述待定數據緩存結構中包含的代碼行中與所述抽象語法標記編譯器綁定的待變更數據類型為與c/c++數據結構要求匹配的目標數據類型。
20、在一些實施例中,所述將所述第二頭文件列表中包含的主數據結構頭文件和子孫數據結構頭文件定義的數據結構寫入待定數據緩存結構中,包括:
21、清空待定數據緩存結構;
22、逐行讀取第二頭文件列表中包含的所述主數據結構頭文件中包含的代碼行,并寫入讀取到的主數據結構頭文件代碼執行去噪處理操作以獲取主數據結構頭文件有效行并寫入所述待定數據緩存結構,直至讀取到所述主數據結構頭文件中包含所述與所述主數據結構頭文件匹配的數據類型名稱的代碼行;
23、和,逐行讀取第二頭文件列表中包含的所述子孫數據結構頭文件中包含的代碼行,并寫入讀取到的子孫數據結構頭文件代碼執行去噪處理操作以獲取子孫數據結構頭文件有效行并寫入所述待定數據緩存結構,直至讀取到所述子孫數據結構頭文件中包含與子孫數據結構頭文件匹配的數據類型名稱的代碼行。
24、在一些實施例中,所述根據預設的第二數據變更處理規則對所述待定數據緩存結構中包含的數據結構進行數據變更處理以生成符合c/c++數據結構要求的目標數據結構,包括:
25、根據預設的關鍵詞關聯關系,變更所述待定數據緩存結構中與所述抽象語法標記編譯器綁定的待變更關鍵詞為與c/c++數據結構要求匹配的目標關鍵詞以形成過渡數據結構,所述關鍵詞關聯關系包括所述抽象語法標記編譯器綁定的待變更關鍵詞與所述c/c++數據結構要求匹配的目標關鍵詞的關聯關系;
<本文檔來自技高網...
【技術保護點】
1.一種數據結構轉換方法,其特征在于,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,所述根據預設的第一數據變更處理規則對所述C語言源代碼頭文件進行數據變更處理以輸出第一頭文件列表,包括:
3.根據權利要求2所述的方法,其特征在于,所述變更所述C語言源代碼頭文件中與所述抽象語法標記編譯器綁定的待變更數據類型為與C/C++數據結構要求匹配的目標數據類型之前,所述方法包括:
4.根據權利要求3所述的方法,其特征在于,所述合并所述第一頭文件列表中重復的子孫數據結構頭文件以生成第二頭文件列表,包括:
5.根據權利要求4所述的方法,其特征在于,所述將所述第二頭文件列表中包含的主數據結構頭文件和子孫數據結構頭文件定義的數據結構寫入待定數據緩存結構中,包括:
6.根據權利要求1-5任一項所述的方法,其特征在于,所述根據預設的第二數據變更處理規則對所述待定數據緩存結構中包含的數據結構進行數據變更處理以生成符合C/C++數據結構要求的目標數據結構,包括:
7.根據權利要求6所述的方法,其特征在于,所述方法還包括:p>8.一種車載消息傳輸方法,其特征在于,所述方法包括:
9.一種電子設備,其特征在于,所述電子設備包括:
10.一種計算機存儲介質,其特征在于,其存儲計算機程序,所述計算機程序使得計算機執行權利要求1-7任一項所述方法。
...
【技術特征摘要】
1.一種數據結構轉換方法,其特征在于,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,所述根據預設的第一數據變更處理規則對所述c語言源代碼頭文件進行數據變更處理以輸出第一頭文件列表,包括:
3.根據權利要求2所述的方法,其特征在于,所述變更所述c語言源代碼頭文件中與所述抽象語法標記編譯器綁定的待變更數據類型為與c/c++數據結構要求匹配的目標數據類型之前,所述方法包括:
4.根據權利要求3所述的方法,其特征在于,所述合并所述第一頭文件列表中重復的子孫數據結構頭文件以生成第二頭文件列表,包括:
5.根據權利要求4所述的方法,其特征在于,所述將所述第二頭文件列表中...
【專利技術屬性】
技術研發人員:夏寶華,鄭洪江,陳崢,陳可偉,淘海武,任惠婷,
申請(專利權)人:上海均勝普聯智能科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。