報文解析方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及移動終端制造技術(shù)領(lǐng)域,尤其涉及一種報文解析方法和裝置。
【背景技術(shù)】
[0002]如圖1所示,在接收到一個報文數(shù)據(jù)之后,通常會先判斷報文數(shù)據(jù)的當(dāng)前ID是什么,然后根據(jù)當(dāng)前ID去查找當(dāng)前ID對應(yīng)的解析方法,通過該解析方法計算出當(dāng)前ID對應(yīng)的協(xié)議所包含的參數(shù)和解析結(jié)果。
[0003]然而,發(fā)明人在實現(xiàn)本發(fā)明的過程中發(fā)現(xiàn),由于產(chǎn)品在研發(fā)過程中,經(jīng)常會增加、修改或者刪除報文,會造成協(xié)議的版本不同。因此,現(xiàn)有的解析方法存在以下不足:
[0004]1、現(xiàn)有的解析方法是根據(jù)報文ID來解析的,只能解析出固定個數(shù)的參數(shù);
[0005]2、當(dāng)對協(xié)議進行修改的時,尤其是對報文數(shù)據(jù)的解析方法進行修改時,需要重新編寫報文ID所對應(yīng)的方法;
[0006]3、當(dāng)協(xié)議中的報文ID不夠用時,增加新的報文ID時需要對該報文ID編寫新的解析方法。
【發(fā)明內(nèi)容】
[0007]本發(fā)明旨在至少在一定程度上解決相關(guān)技術(shù)中的技術(shù)問題之一。
[0008]為此,本發(fā)明的第一個目的在于提出一種報文解析方法,該方法具有以下有益效果:1、讓報文數(shù)據(jù)域的解析變得可配置,可以只計算協(xié)議中數(shù)據(jù)域的某幾個值,而不需要計算該報文數(shù)據(jù)中沒有用到的數(shù)據(jù);2、采用通用的解析數(shù)據(jù)方法以及報文數(shù)據(jù)的解析參數(shù)列表,避免了協(xié)議的版本不統(tǒng)一的問題;3、報文數(shù)據(jù)的解析參數(shù)列表中的信息可以表示出數(shù)據(jù)域的所有情況,包括加減乘除等操作;4、當(dāng)對報文數(shù)據(jù)進行增加、修改、刪除時,只需要修改解析參數(shù)列表中的信息即可。
[0009]本發(fā)明的第二個目的在于提出一種報文解析裝置。
[0010]為達上述目的,本發(fā)明第一方面實施例提出了一種報文解析方法,包括:獲取報文數(shù)據(jù)和報文ID,并獲取所述報文ID中待解析的Key列表;讀取所述報文ID的解析配置信息,并根據(jù)所述待解析的Key列表獲所述待解析的Key列表對應(yīng)的解析參數(shù)。
[0011]本發(fā)明實施例的報文解析方法,通過報文ID和待解析的Key列表查找對應(yīng)的解析配置信息,并從解析配置信息中獲取對應(yīng)的解析參數(shù),使用該解析參數(shù)對報文數(shù)據(jù)進行解析,具有以下有益效果:1、讓報文數(shù)據(jù)域的解析變得可配置,可以只計算協(xié)議中數(shù)據(jù)域的某幾個值,而不需要計算該報文數(shù)據(jù)中沒有用到的數(shù)據(jù);2、采用通用的解析數(shù)據(jù)方法以及報文數(shù)據(jù)的解析參數(shù)列表,避免了協(xié)議的版本不統(tǒng)一的問題;3、報文數(shù)據(jù)的解析參數(shù)列表中的信息可以表示出數(shù)據(jù)域的所有情況,包括加減乘除等操作;4、當(dāng)對報文數(shù)據(jù)進行增加、修改、刪除時,只需要修改解析參數(shù)列表中的信息即可。
[0012]為達上述目的,本發(fā)明第二方面實施例提出了一種報文解析裝置,包括:第一獲取模塊,用于獲取報文數(shù)據(jù)和報文ID,并獲取所述報文ID中待解析的Key列表;第二獲取模塊,用于讀取所述報文ID的解析配置信息;第三獲取模塊,用于根據(jù)所述待解析的Key列表獲所述待解析的Key列表對應(yīng)的解析參數(shù);以及解析模塊,用于根據(jù)所述解析參數(shù)對所述報文數(shù)據(jù)進行解析。
[0013]本發(fā)明實施例的報文解析裝置,通過報文ID和待解析的Key列表查找對應(yīng)的解析配置信息,并從解析配置信息中獲取對應(yīng)的解析參數(shù),使用該解析參數(shù)對報文數(shù)據(jù)進行解析,具有以下有益效果:1、讓報文數(shù)據(jù)域的解析變得可配置,可以只計算協(xié)議中數(shù)據(jù)域的某幾個值,而不需要計算該報文數(shù)據(jù)中沒有用到的數(shù)據(jù);2、采用通用的解析數(shù)據(jù)方法以及報文數(shù)據(jù)的解析參數(shù)列表,避免了協(xié)議的版本不統(tǒng)一的問題;3、報文數(shù)據(jù)的解析參數(shù)列表中的信息可以表示出數(shù)據(jù)域的所有情況,包括加減乘除等操作;4、當(dāng)對報文數(shù)據(jù)進行增加、修改、刪除時,只需要修改解析參數(shù)列表中的信息即可。
[0014]本發(fā)明附加的方面和優(yōu)點將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實踐了解到。
【附圖說明】
[0015]本發(fā)明上述的和/或附加的方面和優(yōu)點從下面結(jié)合附圖對實施例的描述中將變得明顯和容易理解,其中:
[0016]圖1是本發(fā)明一個實施例的報文解析方法的流程圖;
[0017]圖2是本發(fā)明一個報文ID的配置文件的示意圖;
[0018]圖3是本發(fā)明一個具體實施例的報文解析方法的流程圖;以及
[0019]圖4是本發(fā)明一個實施例的報文解析裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0020]下面詳細(xì)描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,旨在用于解釋本發(fā)明,而不能理解為對本發(fā)明的限制。
[0021]此外,術(shù)語“第一”、“第二”僅用于描述目的,而不能理解為指示或暗示相對重要性或者隱含指明所指示的技術(shù)特征的數(shù)量。由此,限定有“第一”、“第二”的特征可以明示或者隱含地包括一個或者更多個該特征。在本發(fā)明的描述中,“多個”的含義是兩個或兩個以上,除非另有明確具體的限定。
[0022]流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個或更多個用于實現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實施方式的范圍包括另外的實現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時的方式或按相反的順序,來執(zhí)行功能,這應(yīng)被本發(fā)明的實施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。
[0023]圖1是本發(fā)明一個實施例的報文解析方法的流程圖。
[0024]如圖1所示,報文解析方法包括:
[0025]SlOl,獲取報文數(shù)據(jù)和報文ID,并獲取報文ID中待解析的Key列表。
[0026]具體地,在利用藍(lán)牙、CAN(Controller Area Network,控制器局域網(wǎng)絡(luò))等通信方式獲取到一個報文數(shù)據(jù)時,會將報文數(shù)據(jù)解析成具體的數(shù)據(jù),將解析后得到的具體數(shù)據(jù)用來顯示,或者使用該具體數(shù)據(jù)對設(shè)備進行控制。其中,報文ID是報文數(shù)據(jù)的標(biāo)識,用于標(biāo)識報文數(shù)據(jù)的唯一性,報文ID可以是系統(tǒng)中默認(rèn)的,也可以是用戶自己定義的。在接收到一個報文數(shù)據(jù)之后,可獲取該報文數(shù)據(jù)中存儲的對應(yīng)的報文ID。
[0027]具體而言,在需要某個報文ID所對應(yīng)的某些或者全部參數(shù)信息時,可以傳入原始的報文,獲取原始的報文中的報文數(shù)據(jù)并獲取報文數(shù)據(jù)中包含的報文ID,并且在傳入原始的報文的同時傳入待解析的Key列表。
[0028]應(yīng)當(dāng)理解的是,接收到的需要從報文數(shù)據(jù)中解析的參數(shù)列表不僅可以使用Key的形式,還可以使用其他任何形式實現(xiàn),只要根據(jù)報文ID可以查找到唯一與之對應(yīng)的解析參數(shù)即可。例如,可以用數(shù)組的順序來替代待解析的Key列表,同樣可以實現(xiàn)該效果。
[0029]S102,讀取報文ID的解析配置信息,并根據(jù)待解析的Key列表獲待解析的Key列表對應(yīng)的解析參數(shù)。
[0030]具體地,可預(yù)先編寫多個報文ID,將其存儲在配置文件中。也就是說,可定義一種報文ID的結(jié)構(gòu),使其使用于報文ID對應(yīng)數(shù)據(jù)域的解析。例如,如圖2所示,可用報文ID作為標(biāo)識,對該報文數(shù)據(jù)的數(shù)據(jù)域進行定義,定義出該報文的數(shù)據(jù)域中包含了多少個具體的數(shù)據(jù),并定義出每個數(shù)據(jù)對應(yīng)的Key,以及定義出每個Key的值解析時所需要的解析參數(shù)。其中,解析參數(shù)包括解析的起始位置、解析的結(jié)束位置、解析的類型、偏移量、乘數(shù)、返回值類型以及解析結(jié)果。解析的起始位置還包括從第幾個數(shù)據(jù)開始解