亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于正則表達(dá)式的AT命令協(xié)議棧設(shè)計(jì)

        2015-11-08 06:52:20范林濤
        關(guān)鍵詞:波特率字符串解碼

        范林濤

        (河北遠(yuǎn)東通信系統(tǒng)工程有限公司,河北 石家莊 050200)

        基于正則表達(dá)式的AT命令協(xié)議棧設(shè)計(jì)

        范林濤

        (河北遠(yuǎn)東通信系統(tǒng)工程有限公司,河北石家莊050200)

        AT命令廣泛應(yīng)用于各種無(wú)線通信移動(dòng)臺(tái)及控制終端,基于其字符串特性及正則表達(dá)式處理字符串的優(yōu)異能力,設(shè)計(jì)并實(shí)現(xiàn)了一款與所在設(shè)備無(wú)關(guān)的AT命令協(xié)議棧以及協(xié)議棧的架構(gòu)、AT命令的正則表達(dá)式模式字符串和表驅(qū)動(dòng)AT命令處理機(jī)制,介紹了AT命令及正則表達(dá)式的基本概念及使用方法,極大地簡(jiǎn)化了程序設(shè)計(jì)和提高了程序的可維護(hù)性,通過(guò)實(shí)際應(yīng)用證明了AT命令協(xié)議棧的可用性及易用性。

        AT命令正則表達(dá)式協(xié)議棧表驅(qū)動(dòng)

        1 引言

        AT命令是從終端設(shè)備(Terminal Equipment,TE)向終端適配器(Terminal Adapter,TA)發(fā)送的用于控制移動(dòng)臺(tái)(Mobile Station,MS)與無(wú)線通信網(wǎng)絡(luò)基站(Base Station,BS)進(jìn)行通信的指令[1]。用戶可以通過(guò)AT命令控制移動(dòng)臺(tái)進(jìn)行呼叫、短消息、分組數(shù)據(jù)、傳真等業(yè)務(wù)的操作。在無(wú)線通信領(lǐng)域,無(wú)論是公網(wǎng)(例如GSM、CDMA)還是專用集群(Tetra、PDT)設(shè)備均支持AT命令,3GPP(3rd Generation Partnership Project)明確的定義了標(biāo)準(zhǔn)的AT命令集。

        AT命令以ASCII字符“AT”作為起始,換行字符為結(jié)束的字符串,中間包含著AT命令及其攜帶的控制或響應(yīng)參數(shù)。每條命令執(zhí)行成功與否都有相應(yīng)的返回,例如成功、被較忙、無(wú)空口服務(wù)等[2]。

        基于AT命令的字符串本源特性,AT命令的解析不可避免的涉及到大量字符串的操作,而AT命令集中包含的大量AT命令可以抽象出一定的格式,或者說(shuō)模式,而正則表達(dá)式則是處理字符串模式的最優(yōu)工具。正則表達(dá)式定義了一種“規(guī)則字符串”,它使用字符集與特殊字符組成一種字符串描述的“模式”,用于匹配具有相同“模式”的字符串[2]。

        2 基本介紹

        2.1AT命令協(xié)議棧

        AT命令傳輸?shù)牧鞒倘鐖D1所示,用戶(人或可執(zhí)行程序)在TE輸入AT命令及其參數(shù),經(jīng)過(guò)AT協(xié)議棧編碼為對(duì)應(yīng)的AT命令,通過(guò)串口到達(dá)MS,隨后經(jīng)過(guò)AT協(xié)議棧解碼進(jìn)入MS的主控模塊,主控模塊控制空口協(xié)議棧進(jìn)行無(wú)線數(shù)據(jù)的發(fā)送[3];從空口收到的數(shù)據(jù)將會(huì)經(jīng)過(guò)一個(gè)反向的流程到達(dá)TE[4]。當(dāng)然用戶可以直接向MS的串口寫入AT命令。

        圖1 AT命令傳輸流程圖

        AT命令的格式具有以下基本規(guī)則:①執(zhí)行指令沒(méi)有操作符,移動(dòng)終端執(zhí)行該命令并返回結(jié)果;②設(shè)置指令后緊跟操作符“=”,既可以用于保存設(shè)置參數(shù)給將來(lái)使用,也可以用于執(zhí)行一項(xiàng)操作;③測(cè)試指令后緊跟操作符“=?”,用于詢問(wèn)移動(dòng)終端設(shè)備是否支持該指令,若支持則返回“OK”,若含有參數(shù),則返回該參數(shù)值的范圍;④讀取指令后緊跟操作符“?”,用于要求移動(dòng)終端返回該命令相關(guān)參數(shù)的存儲(chǔ)值。

        AT命令具有以下符號(hào)約定:①[…]表示指令所帶參數(shù)是可選的;②<…>尖括號(hào)內(nèi)為指令的一句法成分;③回車符(ASCII=13);④換行符(ASCII=10);⑤ (ASCII=26)。

        2.2正則表達(dá)式介紹

        正則表達(dá)式由一些普通字符和一些元字符組成。普通字符包括大小寫的字母、數(shù)字及符號(hào),而元字符則具有特殊的含義,表1為常用的正則表達(dá)式元字符及其含義[5]。

        表1 正則表達(dá)式元字符

        通過(guò)對(duì)AT命令集中命令的抽象,總結(jié)出以下5種AT命令的模式,如表2所示。

        表2 AT命令模式字符串

        分別針對(duì)5種模式的AT命令列舉出實(shí)例:①M(fèi)S號(hào)碼:AT+CNUM?;②測(cè)試串口命令:AT+IPR=?;③轉(zhuǎn)組命令:AT+CSG=,;④撥號(hào)命令:ATD★99#;⑤收到短消息:+CTSDSR:,[],[],,,user data。需要說(shuō)明的是,在類似短消息這種帶有數(shù)據(jù)的AT命令,數(shù)據(jù)本身不是AT命令的一部分,AT命令在遇到第一個(gè)便已結(jié)束,而后續(xù)數(shù)據(jù)user data代用單獨(dú)的處理流程。

        3 設(shè)計(jì)實(shí)現(xiàn)

        在TE和MS上均有可能出現(xiàn)AT命令的解析和編碼,將AT命令處理的模塊設(shè)計(jì)為協(xié)議棧的模式供需要的進(jìn)程調(diào)用。AT協(xié)議棧為應(yīng)用程序提供了一個(gè)入口函數(shù)和3個(gè)消息類型,分別對(duì)應(yīng)3種操作:初始化、編碼及解碼,如圖2所示。

        圖2 AT協(xié)議棧入口處理流程圖

        3.1初始化

        AT協(xié)議棧的初始化主要用來(lái)設(shè)置AT命令集的版本及支持的AT命令、協(xié)議棧發(fā)送回調(diào)函數(shù)、協(xié)議棧輸出Trace回調(diào)函數(shù)及Trace等級(jí)、定義及編譯正則表達(dá)式等初始化操作。

        3.2編碼

        AT協(xié)議棧的編碼是將AT命令參數(shù)集按照AT命令的規(guī)則變成AT命令字符串,AT命令參數(shù)集包含以下成員變量,如表3所示。

        AT命令編碼的過(guò)程分為以下4個(gè)步驟:①根據(jù)AT命令索引indx編入AT命令名稱;②根據(jù)類型type編入類型關(guān)鍵字,如“=”、“?”等;③根據(jù)參數(shù)個(gè)數(shù)quti將quti個(gè)node編入AT命令,中間使用“,”分隔,最后一個(gè)參數(shù)編碼完成后使用收尾;④如果短消息或分組數(shù)據(jù)長(zhǎng)度leng大于0,則將strg的前l(fā)eng個(gè)字節(jié)編入AT命令并以結(jié)尾;隨后調(diào)用AT命令發(fā)送回調(diào)函數(shù)將其發(fā)送到控制進(jìn)程。

        表3 AT命令參數(shù)集成員表

        3.3解碼

        AT協(xié)議棧的解碼是將AT命令字符串解析為AT命令參數(shù)集。AT命令解碼模塊主要有以下幾個(gè)組成部分,如圖3所示。

        圖3 AT命令解碼模塊圖

        由于AT命令的輸入并不一定一次輸入完整的AT命令,同時(shí)也有可能一次輸入一個(gè)以上的AT命令,因此在進(jìn)入AT命令解碼流程之初,輸入的字符串首先進(jìn)入一個(gè)AT命令循環(huán)隊(duì)列,隊(duì)列中存儲(chǔ)的是未執(zhí)行的不完全(尚未遇到)的AT命令。當(dāng)有新的字符(串)輸入,首先將字符(串)追加在隊(duì)列后面,然后搜索新輸入的字符(串)里面有沒(méi)有字符,如果有,則將搜索到的完整AT命令剪切進(jìn)入主循環(huán)進(jìn)行后續(xù)操作,如果沒(méi)有則返回,等待下一次搜索。

        從隊(duì)列中搜索到的完整的AT命令進(jìn)入正則表達(dá)式匹配模塊,依次針對(duì)此AT命令對(duì)匹配模式表的5個(gè)模式進(jìn)行匹配,匹配成功后針對(duì)此模式對(duì)該AT命令進(jìn)行字符串分割,最終將AT命令字符串分割成為AT命令參數(shù)集,然后進(jìn)入AT命令處理模塊。AT命令處理模塊采用函數(shù)指針表驅(qū)動(dòng)原理,將分割后的參數(shù)集index及type作為索引輸入到函數(shù)指針表中,即可直接調(diào)用執(zhí)行函數(shù),這樣的操作不需要針對(duì)數(shù)百函數(shù)進(jìn)行逐個(gè)判斷,而且通過(guò)指針調(diào)用函數(shù)實(shí)時(shí)性很高。對(duì)于軟件維護(hù)來(lái)說(shuō),添加或刪除一條AT命令,只需要在表中添加刪除對(duì)應(yīng)的表元素并添加刪除對(duì)應(yīng)的處理函數(shù)即可,而不需要修改程序的主流程和處理邏輯。為保證協(xié)議棧的健壯性[6],協(xié)議棧還需要狀態(tài)機(jī)及定時(shí)器的操作。

        4 測(cè)試驗(yàn)證

        為保證平臺(tái)無(wú)關(guān)性,軟件在Windows XP、x86 Linux及ARM Linux平臺(tái)下,分別使用VC++6.0[7]、gcc及arm-linux-guneabi-gcc編譯通過(guò)并正常運(yùn)行。將AT協(xié)議棧移植到某集群通信移動(dòng)臺(tái)中,使用串口與PC連接,在PC端使用串口助手向移動(dòng)臺(tái)發(fā)送AT命令,并確認(rèn)移動(dòng)臺(tái)的動(dòng)作以及其回復(fù)的AT命令是否正確。

        4.1功能測(cè)試

        按照AT命令集手冊(cè)逐條執(zhí)行AT命令,確認(rèn)移動(dòng)臺(tái)能夠做出正確的動(dòng)作和回應(yīng)。

        例如:輸入“AT+CNUM?”詢問(wèn)移動(dòng)臺(tái)號(hào)碼,移動(dòng)臺(tái)回復(fù)“+CNUM:0,20201OK”;輸入“AT+IPR?”詢問(wèn)移動(dòng)臺(tái)串口波特率,移動(dòng)臺(tái)回復(fù)“+IPR:9600OK”,隨后更改移動(dòng)臺(tái)波特率輸入“AT+IPR=115200”,移動(dòng)臺(tái)回復(fù)亂碼,這是由于波特率已經(jīng)發(fā)生變化,更改串口助手連接波特率為115200,再次詢問(wèn)移動(dòng)臺(tái)波特率,移動(dòng)臺(tái)回復(fù)“+IPR:115200OK”,說(shuō)明移動(dòng)臺(tái)在AT命令的控制下更改串口波特率成功。

        4.2性能測(cè)試

        使用MOXA nPort一網(wǎng)口轉(zhuǎn)16串口服務(wù)器通過(guò)串口連接10個(gè)移動(dòng)臺(tái),編寫一個(gè)多串口AT命令控制程序,此程序可以在網(wǎng)口端向10個(gè)移動(dòng)臺(tái)周期性發(fā)送AT指令,控制移動(dòng)臺(tái)發(fā)送組呼、全雙工個(gè)呼、半雙工個(gè)呼及文本組短消息,其中2個(gè)手臺(tái)為主叫,8個(gè)為被叫,2個(gè)主叫分別附屬在2個(gè)組防止呼叫沖突,控制呼叫間隔為30 s,呼叫時(shí)長(zhǎng)30 s,收到呼叫后可以自動(dòng)應(yīng)答,同時(shí)統(tǒng)計(jì)業(yè)務(wù)成功及失敗的次數(shù)。經(jīng)過(guò)約12 h的測(cè)試,測(cè)試結(jié)果如表4所示。

        表4 壓力測(cè)試結(jié)果表

        從結(jié)果可見(jiàn),壓力測(cè)試中發(fā)生了呼叫建立失敗的情況,通過(guò)基站的運(yùn)行記錄分析,與呼叫的建立無(wú)關(guān),即與AT命令無(wú)關(guān),因此AT命令在12 h的連續(xù)工作中,沒(méi)有出現(xiàn)異常,實(shí)現(xiàn)了設(shè)計(jì)功能,滿足了設(shè)計(jì)需求。

        5 結(jié)束語(yǔ)

        通過(guò)對(duì)AT協(xié)議棧的測(cè)試,證實(shí)了AT協(xié)議棧設(shè)計(jì)的可行性和易用性,不只可以通過(guò)人工方式控制移動(dòng)臺(tái),而且可以使用程序全天候無(wú)人值守的監(jiān)控移動(dòng)臺(tái)狀況,控制移動(dòng)臺(tái)的工作,可以廣泛的應(yīng)用于各種無(wú)線通信移動(dòng)臺(tái),甚至數(shù)傳臺(tái)使用,同時(shí)對(duì)相關(guān)及相似項(xiàng)目均有較大的借鑒及復(fù)用價(jià)值。

        [1]藍(lán)云燕,羅文龍,李曄,等.一種基于AT命令的移動(dòng)通信終端軟件結(jié)構(gòu)[J].微計(jì)算機(jī)應(yīng)用,2007(10):1034-1038.

        [2]胥清化.基于正則表達(dá)式的高速協(xié)議識(shí)別研究與實(shí)現(xiàn)[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2008:7-10.

        [3]張宗軍,劉寧慶,張乃通.數(shù)字集群移動(dòng)通信系統(tǒng)空中接口協(xié)議的仿真研究[J].無(wú)線電工程,2001(9):75-78.

        [4]李佳,黃登山,賀偉.一種數(shù)據(jù)卡PC側(cè)收發(fā)AT命令模塊的實(shí)現(xiàn)方法[J].計(jì)算機(jī)測(cè)量與控制,2010,18(6):1370-1372.

        [5]范慧萍.基于正則表達(dá)式的協(xié)議識(shí)別研究與實(shí)現(xiàn)[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2007:32-35.

        [6]陳棟毅.基于AT命令機(jī)制PC側(cè)軟件與手機(jī)交互系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2011:22-25.

        [7]捷新工作室.Visual C++6.0高級(jí)教程[M].北京:清華大學(xué)出版社,1997(6):235-279.

        Design on AT Command Protocol Stack Based on Regular Expression

        FAN Lin-tao
        (Hebei Far-east Communication System Engineering Co,Ltd.,Shijiazhuang Hebei 050200,China)

        The AT command is widely used in all kinds of wireless communication mobile station and control terminal.Based on its character string features and the excellent string processing capability of regular expression,this paper designs and implements an AT command protocol stack independent of device,and introduces the protocol stack architecture,AT command string expression pattern and table-driven AT command handling mechanism.The basic concept and application method of AT command regular expression are described.The proposed AT command protocol stack simplifies the procedure design and improves the program maintainability.The practical application proves the availability and usability of this protocol stack.

        AT command;regular expression;protocol stack;table-driven

        TP393

        A

        1008-1739(2015)15-44-4

        定稿日期:2015-07-12

        2010年度電子信息產(chǎn)業(yè)發(fā)展基金第一批項(xiàng)目(工信部財(cái)[2010]301號(hào))城市軌道交通專業(yè)通信和指揮調(diào)度系統(tǒng)應(yīng)用示范

        猜你喜歡
        波特率字符串解碼
        《解碼萬(wàn)噸站》
        CAN 總線波特率自適應(yīng)程序設(shè)計(jì)
        智能制造(2020年5期)2020-07-03 06:24:00
        解碼eUCP2.0
        NAD C368解碼/放大器一體機(jī)
        Quad(國(guó)都)Vena解碼/放大器一體機(jī)
        基于FPGA的異步串行通信波特率容錯(cuò)設(shè)計(jì)
        一種新的基于對(duì)稱性的字符串相似性處理算法
        依據(jù)字符串匹配的中文分詞模型研究
        C*Core芯片SCI串口波特率容限優(yōu)化
        一種針對(duì)Java中字符串的內(nèi)存管理方案
        亚洲中文字幕无码中文字在线| 国产不卡在线播放一区二区三区| 91视色国内揄拍国内精品人妻| 风流少妇一区二区三区91| 成人大片在线观看视频| 久久国产精品一国产精品金尊| 18分钟处破好疼哭视频在线观看 | 中国老太婆bb无套内射| 曰本人做爰又黄又粗视频| 国产在线一91区免费国产91| 69搡老女人老妇女老熟妇| 国产白色视频在线观看| 国产精品国产三级国产a| 夜夜躁狠狠躁日日躁2022| 国产精品久久无码一区二区三区网| 欧美zozo另类人禽交| av在线播放亚洲天堂| 国产a国产片国产| 日韩亚洲中字无码一区二区三区| 国产精品视频一区日韩丝袜| 国产av一区麻豆精品久久| 久久99精品国产麻豆| 欧美成人国产精品高潮| 亚洲av无码之国产精品网址蜜芽| 大陆一级毛片免费播放| 日本av一区二区播放| 精品人妻av中文字幕乱| 狠狠躁18三区二区一区| 免费又黄又爽又猛的毛片| 无码国产精品一区二区免费式芒果| 99精品国产综合久久麻豆| 人妻 色综合网站| 亚洲高清无码第一| 亚洲中文字幕国产剧情| 亚洲无av在线中文字幕| 久久露脸国产精品| 日韩无码无播放器视频| 国产一区二区三区影片| 欧美最猛性xxxx| 亚洲国产天堂一区二区三区| YW亚洲AV无码乱码在线观看|