• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    某協(xié)議報(bào)文編解碼模塊的設(shè)計(jì)與實(shí)現(xiàn)

    2013-11-21 03:20:50潘江峰耿修堂
    關(guān)鍵詞:報(bào)頭編解碼字段

    羅 捷,潘江峰,耿修堂

    (西北機(jī)電工程研究所,陜西 咸陽(yáng) 712099)

    隨著信息技術(shù)的迅猛發(fā)展,武器裝備的信息化程度亟待提高。在某武器系統(tǒng)信息化工程中,指揮控制指令的下達(dá)、空情信息的傳達(dá)、武器終端的狀態(tài)上報(bào)等信息的傳遞,由一個(gè)共同遵循的協(xié)議進(jìn)行約定。協(xié)議中詳細(xì)規(guī)定了所交換的報(bào)文及其相關(guān)信息。如何能夠快速、準(zhǔn)確地對(duì)報(bào)文進(jìn)行編解碼,是實(shí)現(xiàn)該協(xié)議重點(diǎn)需要解決的問(wèn)題。

    針對(duì)該協(xié)議定義,筆者設(shè)計(jì)了一種編解碼模塊的實(shí)現(xiàn)方案,并在某項(xiàng)目上成功進(jìn)行了應(yīng)用。

    1 編解碼模塊的總體設(shè)計(jì)

    1.1 編解碼模塊的設(shè)計(jì)要求

    設(shè)計(jì)的編解碼模塊應(yīng)滿足如下要求:

    1)滿足協(xié)議對(duì)實(shí)時(shí)性的要求。

    2)向高層提供編碼和解碼2個(gè)接口函數(shù)。

    3)出現(xiàn)異常情況時(shí),能自動(dòng)提供異常信息。

    4)具有校驗(yàn)功能。

    1.2 編解碼模塊的總體設(shè)計(jì)

    實(shí)現(xiàn)協(xié)議報(bào)文的編解碼主要有兩方面的工作,一是進(jìn)行協(xié)議轉(zhuǎn)換,二是編解碼程序的設(shè)計(jì)實(shí)現(xiàn),其實(shí)現(xiàn)過(guò)程如圖1所示。

    1.2.1 協(xié)議轉(zhuǎn)換

    協(xié)議是在一種抽象層次上來(lái)表示數(shù)據(jù)結(jié)構(gòu)信息,在實(shí)際應(yīng)用中,需要將協(xié)議描述的數(shù)據(jù)結(jié)構(gòu)翻譯轉(zhuǎn)換成具體語(yǔ)言(如C、C++等)的數(shù)據(jù)結(jié)構(gòu)表示形式[1]。需要對(duì)協(xié)議描述進(jìn)行分析、總結(jié),提煉出統(tǒng)一的C語(yǔ)言數(shù)據(jù)結(jié)構(gòu),將其作為與高層的數(shù)據(jù)接口。

    1.2.2 編解碼程序的設(shè)計(jì)實(shí)現(xiàn)

    編碼的過(guò)程是將高層提供的待編碼的報(bào)文信息(轉(zhuǎn)換后的C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)),經(jīng)過(guò)編碼函數(shù)處理后,轉(zhuǎn)換成二進(jìn)制碼流提供給高層。

    解碼的過(guò)程是將高層提供的待解碼的二進(jìn)制碼流,經(jīng)過(guò)解碼函數(shù)處理后,解析成報(bào)文信息(C語(yǔ)言數(shù)據(jù)結(jié)構(gòu))提供給高層。

    在對(duì)編解碼模塊進(jìn)行設(shè)計(jì)時(shí),需要著重考慮軟件的可維護(hù)性和健壯性等[2-5]。

    2 協(xié)議轉(zhuǎn)換

    2.1 協(xié)議簡(jiǎn)介

    該協(xié)議詳細(xì)定義了所交換的報(bào)文的結(jié)構(gòu)、報(bào)文中每個(gè)字段的含義及字段長(zhǎng)度、校驗(yàn)方式等。

    報(bào)文由報(bào)頭、報(bào)文類(lèi)型字、信息字段、報(bào)文校驗(yàn)字組成。報(bào)頭由一些地址信息和控制類(lèi)信息組成。報(bào)文類(lèi)型字決定了報(bào)文的類(lèi)型,從而確定了本報(bào)文所包含的信息字段及其排列順序。報(bào)文校驗(yàn)字采用累加校驗(yàn)和的方式。

    從協(xié)議描述到C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換需要經(jīng)過(guò)字段類(lèi)型的轉(zhuǎn)換、報(bào)文結(jié)構(gòu)的轉(zhuǎn)換、數(shù)據(jù)接口的轉(zhuǎn)換3個(gè)步驟。

    2.2 字段類(lèi)型的轉(zhuǎn)換

    縱觀整個(gè)協(xié)議,各個(gè)字段的字長(zhǎng)從1 ~32 bit不等,有的帶有符號(hào)位,有的沒(méi)有符號(hào)位。在將協(xié)議描述轉(zhuǎn)換成C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)時(shí),轉(zhuǎn)換規(guī)則見(jiàn)表1。

    表1 類(lèi)型轉(zhuǎn)換規(guī)則

    2.3 報(bào)文結(jié)構(gòu)的轉(zhuǎn)換

    每個(gè)報(bào)文都有一個(gè)報(bào)頭,其結(jié)構(gòu)是固定的,所以將報(bào)頭定義為一個(gè)C語(yǔ)言的結(jié)構(gòu)體類(lèi)型。

    typedef struct

    {

    報(bào)頭字段1

    報(bào)頭字段2

    ……

    } HEAD; //報(bào)頭

    對(duì)于一個(gè)指定的報(bào)文,其包含的信息字段及其排列順序是固定的,所以將每一個(gè)報(bào)文的信息字段定義為一個(gè)C語(yǔ)言的結(jié)構(gòu)體類(lèi)型,這樣定義了多個(gè)C語(yǔ)言結(jié)構(gòu)體類(lèi)型與每個(gè)報(bào)文的信息字段對(duì)應(yīng)。

    typedef struct

    {

    報(bào)文1的信息字段1

    報(bào)文1的信息字段2

    ……

    } BWXX1; //報(bào)文1的信息字段

    typedef struct

    {

    報(bào)文2的信息字段1

    報(bào)文2的信息字段2

    ……

    } BWXX2; //報(bào)文2的信息字段

    ……

    2.4 數(shù)據(jù)接口的轉(zhuǎn)換

    每個(gè)報(bào)文的報(bào)頭和報(bào)文類(lèi)型字的結(jié)構(gòu)是固定的。

    報(bào)文的校驗(yàn)功能在編解碼模塊中實(shí)現(xiàn),只需把校驗(yàn)的結(jié)果反饋給高層即可。

    從結(jié)構(gòu)上看,各個(gè)報(bào)文的不同之處在報(bào)文的信息字段部分,故將各個(gè)報(bào)文信息字段定義為一個(gè)C語(yǔ)言的共用體類(lèi)型,從而實(shí)現(xiàn)向高層提供一個(gè)統(tǒng)一的數(shù)據(jù)接口,定義示意如下。

    typedef struct

    {

    struct HEAD head; //報(bào)頭

    unsigned char type; //報(bào)文類(lèi)型字

    union

    {

    struct BWXX1 bw1;

    struct BWXX2 bw2;

    ……

    }bwxx;//報(bào)文信息

    }MESSAGE;

    3 編解碼程序的具體實(shí)現(xiàn)

    編解碼模塊從功能上可以分為核心模塊、校驗(yàn)?zāi)K、異常處理模塊、比特流處理模塊。編解碼模塊的結(jié)構(gòu)如圖2所示。

    3.1 核心模塊

    核心模塊負(fù)責(zé)實(shí)現(xiàn)對(duì)報(bào)文的編解碼功能,并向高層提供編碼和解碼2個(gè)接口。

    每一個(gè)C語(yǔ)言結(jié)構(gòu)體類(lèi)型都有一個(gè)對(duì)應(yīng)的編碼函數(shù),負(fù)責(zé)對(duì)結(jié)構(gòu)中的所有成員進(jìn)行編碼。在實(shí)現(xiàn)對(duì)報(bào)文的編碼時(shí),先打包報(bào)頭、報(bào)文類(lèi)型字,再根據(jù)報(bào)文類(lèi)型字判斷是哪條報(bào)文,繼而調(diào)用該報(bào)文信息字段的編碼函數(shù)。

    每一個(gè)C語(yǔ)言結(jié)構(gòu)體類(lèi)型都有一個(gè)對(duì)應(yīng)的解碼函數(shù),負(fù)責(zé)對(duì)結(jié)構(gòu)中的所有成員進(jìn)行解碼。在實(shí)現(xiàn)對(duì)報(bào)文的解碼時(shí),先解包報(bào)頭、報(bào)文類(lèi)型字,再根據(jù)報(bào)文類(lèi)型字判斷是哪條報(bào)文,繼而調(diào)用該報(bào)文信息字段的解碼函數(shù)。

    3.2 校驗(yàn)?zāi)K

    協(xié)議采用校驗(yàn)和的方式進(jìn)行校驗(yàn),即編碼后的數(shù)據(jù)流按字節(jié)累加,其結(jié)果的低8位作為校驗(yàn)和,放在報(bào)文的最后一個(gè)字節(jié)。為了簡(jiǎn)化高層的處理,將校驗(yàn)功能放到編解碼模塊里來(lái)實(shí)現(xiàn)。編碼時(shí),需要按照規(guī)定在編碼后的比特流后添加校驗(yàn)和。解碼時(shí),需要根據(jù)校驗(yàn)和進(jìn)行判斷,以確定是否正確接收到了報(bào)文。

    3.3 異常處理模塊

    在編解碼過(guò)程中還要對(duì)難以預(yù)料的一些問(wèn)題進(jìn)行異常處理,比如數(shù)據(jù)越界、不支持的報(bào)文類(lèi)型字、待解包的字符串過(guò)短解不出正確的數(shù)據(jù)、由校驗(yàn)和判斷出傳輸中出現(xiàn)錯(cuò)誤等等,并將發(fā)現(xiàn)的問(wèn)題向高層報(bào)告。

    3.4 比特流處理模塊

    協(xié)議中的數(shù)據(jù)類(lèi)型從1~32 bit不等,而且出現(xiàn)的順序是隨機(jī)的,沒(méi)有規(guī)律可循,如何能夠?qū)崿F(xiàn)從字節(jié)中的任何位置開(kāi)始打包、解包任何長(zhǎng)度(32 bit內(nèi))的數(shù)據(jù),同時(shí)保證具有良好的擴(kuò)展性是重點(diǎn)需要解決的問(wèn)題,這也是編解碼模塊實(shí)現(xiàn)的難點(diǎn)。

    對(duì)于編碼過(guò)程,采用以下3個(gè)層次進(jìn)行處理:

    3.4.1 基礎(chǔ)編碼函數(shù)

    基礎(chǔ)編碼函數(shù)是將1~8 bit數(shù)據(jù)打包到比特流中,需要全面考慮待打包數(shù)據(jù)從當(dāng)前字節(jié)的第幾個(gè)比特開(kāi)始打包、當(dāng)前字節(jié)是否放得下、是否需要跨字節(jié)等情況,從而使得基礎(chǔ)編碼函數(shù)能夠適用于所有可能的情況。這是進(jìn)行編碼的基礎(chǔ),它的正確性、健壯性決定了編碼模塊的正確性、健壯性。

    3.4.2 擴(kuò)展編碼函數(shù)

    擴(kuò)展編碼函數(shù)是將9 ~32 bit數(shù)據(jù)打包到比特流中,這里采用了一個(gè)巧妙的方法將問(wèn)題進(jìn)行轉(zhuǎn)化。首先,對(duì)待編碼數(shù)據(jù)進(jìn)行分解,分解成n+8、n+8+8、n+8+8+8位,其中1≤n≤8,n代表待編碼數(shù)據(jù)最高字節(jié)占有的比特?cái)?shù);其次,針對(duì)待編碼數(shù)據(jù)的每個(gè)字節(jié)調(diào)用一次基礎(chǔ)編碼函數(shù),從高字節(jié)到低字節(jié)依次進(jìn)行編碼。這樣復(fù)雜的編碼問(wèn)題轉(zhuǎn)換成了簡(jiǎn)單的加法問(wèn)題。

    3.4.3 帶符號(hào)位的數(shù)據(jù)的編碼函數(shù)

    對(duì)于帶符號(hào)位的數(shù)據(jù)來(lái)說(shuō),區(qū)分正負(fù)數(shù)分別對(duì)待。對(duì)于正數(shù),直接調(diào)用相關(guān)的基礎(chǔ)編碼函數(shù)、擴(kuò)展編碼函數(shù)即可。對(duì)于負(fù)數(shù),先調(diào)用基礎(chǔ)編碼函數(shù)將符號(hào)位進(jìn)行打包,再根據(jù)負(fù)數(shù)的存儲(chǔ)形式取其數(shù)據(jù)位[6],之后再調(diào)用相關(guān)的基礎(chǔ)編碼函數(shù)、擴(kuò)展編碼函數(shù)。

    與編碼過(guò)程類(lèi)似,解碼過(guò)程也是采用基礎(chǔ)解碼函數(shù)、擴(kuò)展解碼函數(shù)、帶符號(hào)位的數(shù)據(jù)的解碼函數(shù)3個(gè)層次進(jìn)行處理。

    4 結(jié) 論

    筆者所設(shè)計(jì)并實(shí)現(xiàn)的編解碼模塊具有良好的框架,使得具有較高的可維護(hù)性。當(dāng)因協(xié)議需要而增加新報(bào)文或者當(dāng)因協(xié)議修改而需要修改某報(bào)文的信息字段時(shí),只需要對(duì)相關(guān)結(jié)構(gòu)定義、報(bào)文信息字段的編解碼函數(shù)等進(jìn)行修改即可。本編解碼模塊具有良好的健壯性。對(duì)基本編碼解碼函數(shù)的遍歷測(cè)試,保證了對(duì)比特流處理的正確性;對(duì)各種可能出現(xiàn)的異常情況進(jìn)行異常處理,保證了本編解碼模塊的健壯性。本編解碼模塊能夠滿足實(shí)時(shí)性的要求。經(jīng)測(cè)試,完成一條報(bào)文的編碼解碼需要的時(shí)間是幾個(gè)毫秒,完全滿足系統(tǒng)實(shí)時(shí)性的需要。

    目前該編解碼模塊已經(jīng)在某系統(tǒng)的多個(gè)設(shè)備中進(jìn)行了應(yīng)用,并取得了較好的效果。

    參考文獻(xiàn)(References)

    [1] 李小文,冉靖.LTE協(xié)議棧中ASN.1模塊的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2011,37(8):252-255.

    LI Xiao-wen, Ran Jing. Design and realization of ASN.1 module in LTE protocol stack[J].Computer Engineering,2011,37(8):252-255. (in Chinese)

    [2] 何國(guó)偉,王瑋.軟件可靠性[M].北京:國(guó)防工業(yè)出版社,1998:218-348.

    HE Guo-wei, WANG Wei. Software reliability[M]. Bejing:National Defense Industry Press,1998:218-348. (in Chinese)

    [3] 鄧良松,劉海巖,陸麗娜.軟件工程[M].2版.西安:西安電子科技大學(xué)出版社,2004:83-93.

    DENG Liang-song, LIU Hai-yan, LU Li-na. Software engineering[M].2nd ed. Xi’an: Xi’an Electronic and Science University Press,2004:83-93. (in Chinese)

    [4] 普雷斯曼 R S.軟件工程[M].郭肇德,鄭少仁,譯.北京:國(guó)防工業(yè)出版社,1988:248-269.

    Prysmian R S.Software engineering[M].GUO Zhao-de,ZHENG Shao-ren,translated. Bejing:National Defense Industry Press,1988:248-269. (in Chinese)

    [5] 鄭人杰,殷仁昆.實(shí)用軟件工程[M].北京:清華大學(xué)出版社,1991:202-220.

    ZHENG Ren-jie, YIN Ren-kun. Practical software engineering[M]. Beijing: Tsinghua University Press,1991:202-220. (in Chinese)

    [6] 譚浩強(qiáng).C程序設(shè)計(jì)[M].3版.北京:清華大學(xué)出版社,2005:40-41.

    TAN Hao-qiang. C programming design[M].3rd ed. Beijing: Tsinghua University Press,2005:40-41. (in Chinese)

    猜你喜歡
    報(bào)頭編解碼字段
    圖書(shū)館中文圖書(shū)編目外包數(shù)據(jù)質(zhì)量控制分析
    1553B總線控制器編解碼設(shè)計(jì)
    城市黨報(bào)報(bào)頭:政治與藝術(shù)的平衡
    大型民機(jī)試飛遙測(cè)視頻編解碼方法研究
    基于H.265編解碼的高清視頻傳輸系統(tǒng)研究
    淡妝濃抹總相宜
    ——對(duì)中國(guó)晚報(bào)報(bào)頭變化的研究與欣賞
    大眾文藝(2015年12期)2015-07-13 07:31:22
    CNMARC304字段和314字段責(zé)任附注方式解析
    無(wú)正題名文獻(xiàn)著錄方法評(píng)述
    IP語(yǔ)音報(bào)頭壓縮設(shè)計(jì)與實(shí)現(xiàn)
    主流視頻編解碼軟件的硬件性能分析與設(shè)計(jì)
    宁阳县| 岫岩| 本溪市| 泰安市| 改则县| 汕尾市| 宣汉县| 沧源| 宜宾市| 望奎县| 砀山县| 泸定县| 色达县| 桃源县| 杭锦旗| 安溪县| 安顺市| 阜新| 清丰县| 中超| 东光县| 兴业县| 大姚县| 江源县| 龙门县| 双牌县| 霍林郭勒市| 孟州市| 西安市| 富阳市| 江门市| 上虞市| 周宁县| 庆云县| 柳州市| 甘德县| 合阳县| 平罗县| 蓬溪县| 湘阴县| 慈利县|