本發(fā)明涉及鐵路通信領(lǐng)域,具體涉及一種cir報文結(jié)構(gòu)翻譯的方法。
背景技術(shù):
1、機(jī)車綜合無線通信設(shè)備(cir)作為鐵路列車專用的無線通信設(shè)備,是傳統(tǒng)無線列調(diào)電臺的升級產(chǎn)品,是保障gsm-r區(qū)段行車安全的重要設(shè)備。自cir設(shè)備投入使用以來,已有十多年的應(yīng)用歷史,其承載的鐵路行車業(yè)務(wù)不斷增加,已經(jīng)成為鐵路行車不可或缺的關(guān)鍵設(shè)備。然而,由于cir設(shè)備定型較早,隨著鐵路業(yè)務(wù)需求的擴(kuò)展,其所需處理的報文種類和復(fù)雜性也隨之增加。面對種類繁多且協(xié)議復(fù)雜的cir報文,開發(fā)者在進(jìn)行報文的解析與翻譯時,常常需要耗費大量精力進(jìn)行繁瑣的字節(jié)切割與數(shù)據(jù)映射工作,進(jìn)而影響開發(fā)效率。
2、目前,針對cir設(shè)備的各類故障,各地通過以太網(wǎng)將實時生成的cir報文傳輸至地面服務(wù)器。服務(wù)器通過對報文的解構(gòu)和翻譯,將其存儲至數(shù)據(jù)庫中,并依此構(gòu)建cir在線監(jiān)測系統(tǒng),實現(xiàn)對列車上cir設(shè)備的實時監(jiān)控。然而,現(xiàn)有的cir報文解析方法存在較多局限性,例如報文協(xié)議復(fù)雜性高、報文種類繁多、翻譯方法擴(kuò)展性差等問題。這些問題不僅增加了開發(fā)者的工作負(fù)擔(dān),還影響了系統(tǒng)對新業(yè)務(wù)需求的快速響應(yīng)能力。
3、為了應(yīng)對cir種類繁多的報文和枯燥重復(fù)的切報文工作,解放開發(fā)者的雙手,迫切需要一種高效、靈活且易于擴(kuò)展的cir報文結(jié)構(gòu)翻譯的方法。通過一種通用的報文解析工具類模塊,能夠根據(jù)業(yè)務(wù)類型和命令等字段,自動分析報文類型并生成相應(yīng)的解析結(jié)果,以大幅提高開發(fā)效率,減少開發(fā)者在報文解析上的重復(fù)勞動,更好地支持鐵路行車業(yè)務(wù)的快速發(fā)展。
技術(shù)實現(xiàn)思路
1、為了解決上述問題,本發(fā)明提供了一種cir報文結(jié)構(gòu)化翻譯的方法,調(diào)用者通過調(diào)用解析報文工具類模塊自動根據(jù)業(yè)務(wù)類型和命令等相關(guān)字段分析報文類型,并返回相應(yīng)解構(gòu)實體類給調(diào)用者,大大提高了開發(fā)者的工作效率。
2、為達(dá)到上述目的,本發(fā)明采取的技術(shù)方案是:一種cir報文結(jié)構(gòu)翻譯的方法,包括:接收模塊、循環(huán)字段賦值模塊和報文接收類模塊;所述接收模塊用于接收調(diào)用者傳入的各項參數(shù),包括報文byte數(shù)組、字段標(biāo)題集合、字段大小集合以及報文接收類,并對這些參數(shù)進(jìn)行合法性校驗,為后續(xù)解析工作提供基礎(chǔ)數(shù)據(jù);所述循環(huán)字段賦值模塊用于通過遍歷字段標(biāo)題集合和字段大小集合,結(jié)合反射機(jī)制動態(tài)解析報文數(shù)據(jù)字段,根據(jù)字段的類型和偏移量,從報文中提取相應(yīng)的字節(jié)數(shù)據(jù)并完成字段賦值,最終生成對應(yīng)的接收類對象;所述報文接收類模塊用于定義報文中所有字段的基本結(jié)構(gòu),包括字段名稱、字段類型、byte數(shù)組形式的字段值、字段標(biāo)題集合以及字段大小集合,通過反射動態(tài)賦值確保字段內(nèi)容的正確性。
3、進(jìn)一步地,所述方法的實施步驟為:
4、a、開始執(zhí)行接收模塊,接收方法所需的參數(shù),包括以下參數(shù):
5、參數(shù)1:報文byte數(shù)組:主要是cir報文的byte數(shù)組;
6、參數(shù)2:報文接收類:主要用于方便循環(huán)字段賦值模塊,通過反射找到對應(yīng)的字段標(biāo)題和大小,并存儲拆分好的cir報文字段,并返回給調(diào)用者;
7、參數(shù)3:偏移量:主要用于計算切報文的位置,可以做到多cir報文解析;
8、參數(shù)4:字段標(biāo)題集合:主要存儲cir協(xié)議定義好的字段名;
9、參數(shù)5:字段大小集合:主要存儲cir協(xié)議定義好的字段名大??;
10、b、根據(jù)接收類利用java反射機(jī)制原理,獲取接收類所有字段集合,進(jìn)入循環(huán)字段賦值模塊步驟c;
11、c、循環(huán)處理所有字段;
12、c1、定義一個循環(huán)變量,用于記錄當(dāng)前循環(huán)位置;
13、c2、根據(jù)循環(huán)變量獲取字段的注解;
14、c3、判斷注解是否為空,如果為空,即沒有注解,循環(huán)變量+1,跳轉(zhuǎn)到c1,繼續(xù)循環(huán),否則,執(zhí)行下一步c3;
15、c3、獲取該字段的標(biāo)題;
16、c4、通過標(biāo)題獲取該字段的索引;
17、c5、通過循環(huán)拿到該字段的初始位置;
18、c5-1、定義循環(huán)變量i=0,定義初始位置等于偏移量,循環(huán)變量用來標(biāo)注當(dāng)前循環(huán)位置、初始位置用來標(biāo)注切字節(jié)數(shù)組的起始位置;
19、c5-2、獲取字段大小集合中當(dāng)前循環(huán)變量的大小;
20、c5-3、將當(dāng)前循環(huán)變量字段的大小和初始值相加;
21、c5-4、循環(huán)變量?i++,判斷是否小于當(dāng)前索引位置,如果是,跳轉(zhuǎn)到c5-2,繼續(xù)循環(huán),否則,終止循環(huán),執(zhí)行下一步c5-5;
22、c5-5、最終拿到字段初始位置;
23、c6、通過拿到的該字段的索引和字段大小集合找到當(dāng)前字段的大小;
24、c7、通過該字段的初始位置和字段大小對原始byte數(shù)組進(jìn)行切段,拿到該字段的byte數(shù)組值,進(jìn)而獲取字段實際值;
25、c8、通過java反射機(jī)制給當(dāng)前字段的byte數(shù)組賦值;
26、c9、判斷注解中有沒有java類型,如果有,執(zhí)行下一步c10,如果沒有,跳轉(zhuǎn)到下面邏輯步驟c11;
27、c10、通過給定的java類型對拿到該字段的byte數(shù)組進(jìn)行轉(zhuǎn)換,并最終賦值給相應(yīng)的?java?類字段;
28、c11、判斷判斷循環(huán)變量是否達(dá)到最大值,如果是,循環(huán)結(jié)束,繼續(xù)下面步驟d;否則,循環(huán)變量+1,繼續(xù)循環(huán)c1;
29、d、將組裝完成的?java?報文接收類返回給調(diào)用者,結(jié)束流程。
30、本發(fā)明的有益效果是:
31、本發(fā)明提供了一種高效的?cir?報文結(jié)構(gòu)翻譯方法,在報文解析和開發(fā)效率方面表現(xiàn)出顯著優(yōu)勢。通過本方法,開發(fā)者可以減少在復(fù)雜報文解析工作上的精力投入,將更多時間集中于業(yè)務(wù)邏輯的開發(fā)。相比傳統(tǒng)方法,本發(fā)明在拓展性和靈活性上具備明顯的改進(jìn),對于新類型的報文,僅需創(chuàng)建對應(yīng)的報文接收類并定義字段標(biāo)題集合、字段大小集合和字段注解,即可通過通用的切割報文方法實現(xiàn)解析,避免了手動切分報文字節(jié)的繁瑣操作。
32、本方法基于?java?反射機(jī)制,通過動態(tài)遍歷報文接收類的字段集合,按照字段大小解析并賦值,最終生成完整的?java?報文接收類對象返回至調(diào)用方。開發(fā)者僅需根據(jù)協(xié)議定義好字段信息,即可快速完成報文的解析與處理,簡化了協(xié)議復(fù)雜性對開發(fā)過程的影響,同時有效優(yōu)化了開發(fā)流程。
33、綜上所述,本發(fā)明的方法通過接收模塊、循環(huán)字段賦值模塊和報文接收類模塊的協(xié)同工作,實現(xiàn)了?cir?報文的高效解析與動態(tài)組裝。該方法統(tǒng)一了多種報文格式的解析流程,增強了報文處理的靈活性與可擴(kuò)展性,為鐵路通信系統(tǒng)的功能優(yōu)化和技術(shù)創(chuàng)新提供了技術(shù)支撐。
1.一種cir報文結(jié)構(gòu)翻譯的方法,其特征在于,所述方法包括:接收模塊、循環(huán)字段賦值模塊和報文接收類模塊;所述接收模塊用于接收調(diào)用者傳入的各項參數(shù),包括報文byte數(shù)組、字段標(biāo)題集合、字段大小集合以及報文接收類,并對這些參數(shù)進(jìn)行合法性校驗,為后續(xù)解析工作提供基礎(chǔ)數(shù)據(jù);所述循環(huán)字段賦值模塊用于通過遍歷字段標(biāo)題集合和字段大小集合,結(jié)合反射機(jī)制動態(tài)解析報文數(shù)據(jù)字段,根據(jù)字段的類型和偏移量,從報文中提取相應(yīng)的字節(jié)數(shù)據(jù)并完成字段賦值,最終生成對應(yīng)的接收類對象;所述報文接收類模塊用于定義報文中所有字段的基本結(jié)構(gòu),包括字段名稱、字段類型、byte數(shù)組形式的字段值、字段標(biāo)題集合以及字段大小集合,通過反射動態(tài)賦值確保字段內(nèi)容的正確性。
2.根據(jù)權(quán)利要求1所述的cir報文結(jié)構(gòu)翻譯的方法,其特征在于,所述方法的實施步驟為: