新聞中心

EEPW首頁 > 手機(jī)與無線通信 > 設(shè)計(jì)應(yīng)用 > OpenAT平臺(tái)的GSM Modem通信協(xié)議報(bào)文設(shè)計(jì)

OpenAT平臺(tái)的GSM Modem通信協(xié)議報(bào)文設(shè)計(jì)

作者: 時(shí)間:2010-06-28 來源:網(wǎng)絡(luò) 收藏


一個(gè)常用短信數(shù)據(jù)格式如下:



其中,以$S作為短信數(shù)據(jù)的幀頭字節(jié);6個(gè)字符作為接收端的認(rèn)證密碼;S/T代表本的發(fā)送方為(S)或短信終端(T);報(bào)文內(nèi)容受短信數(shù)據(jù)長(zhǎng)度的限制,一般在100字節(jié)以下;以#作為報(bào)文的結(jié)束符。

基于如上報(bào)文定義,一條上位機(jī)發(fā)出的SMS報(bào)文示例如下:

$S000000S0000AA100RlY2W3R4Y5G6Y7W5B#

其中,$S為數(shù)據(jù)幀頭;000000為SMS終端默認(rèn)的認(rèn)證密碼;S表明本數(shù)據(jù)來自 ;0000為服務(wù)器設(shè)備ID編號(hào);AA表示當(dāng)前數(shù)據(jù)命令;10為十六進(jìn)制數(shù)據(jù)0x10,表示當(dāng)前數(shù)據(jù)內(nèi)容長(zhǎng)度字節(jié);0R1G2W3R4G5G6Y7W為報(bào)文內(nèi)容;5B為校驗(yàn)碼;#為結(jié)束符。

同理,短信終端返回至GSM 的SMS報(bào)文示例為:

$S888888T0055CC1930RX1YX2YX3YX4YX5Y6Y7YXEF#

其中,$S為數(shù)據(jù)幀頭;888888為SMS上位機(jī)服務(wù)器端默認(rèn)的認(rèn)證密碼;T表明數(shù)據(jù)來自短信終端;0055為終端設(shè)備ID編號(hào);CC表示當(dāng)前返回?cái)?shù)據(jù)命令;19為十六進(jìn)制數(shù)據(jù)0x19,表明當(dāng)前返回?cái)?shù)據(jù)內(nèi)容長(zhǎng)度字節(jié);30RX1YX2YX3YX4YX5Y6Y7YX為返回?cái)?shù)據(jù)內(nèi)容;EF為校驗(yàn)碼;#為結(jié)束符。

5 GSM Modem短信數(shù)據(jù)報(bào)文處理流程

采用常規(guī)的上位機(jī)軟件來進(jìn)行,將數(shù)據(jù)通信報(bào)文整理好后再根據(jù)一系列的AT命令組合發(fā)送至GSM Modem,同時(shí)還需要解析來自若干個(gè)SMS終端的數(shù)據(jù)通信報(bào)文。常規(guī)上位機(jī)服務(wù)器端軟件處理短信數(shù)據(jù)的流程如圖4所示。



上位機(jī)軟件數(shù)據(jù)處理過程中,需要不停地對(duì)GSMModem進(jìn)行操作,響應(yīng)GSM Modem接收到的數(shù)據(jù),處理發(fā)送數(shù)據(jù)包。在整個(gè)過程中,GSM Modem只作為數(shù)據(jù)傳輸工具,不參與任何的數(shù)據(jù)處理;而一般的SMS遠(yuǎn)程監(jiān)控通信系統(tǒng)的通信報(bào)文多達(dá)幾十乃至上百條,會(huì)導(dǎo)致上位機(jī)軟件工作量非常大。為了便于上位機(jī)程序簡(jiǎn)化開發(fā),結(jié)合Q24PL001模塊自身支持嵌入式軟件的特點(diǎn),將短信數(shù)據(jù)通信報(bào)文的發(fā)送處理和接收解析流程嵌入GSMModem內(nèi),只保留一些簡(jiǎn)單的AT命令接口給上位機(jī)軟件控制,大大減小了上位機(jī)軟件的工作量。

6 基于的通信報(bào)文封裝

嵌入式操作系統(tǒng)是為廣泛的基于GSM/GPRS的模塊系統(tǒng)應(yīng)用而的,用于實(shí)現(xiàn)嵌入式的短信數(shù)據(jù)通信報(bào)文封裝,可以大大提高GSM Modem硬件系統(tǒng)的資源利用率?;贠penAT的程序設(shè)計(jì)流程分為SIM卡服務(wù)聲明、短信服務(wù)聲明、發(fā)送數(shù)據(jù)包處理和接收數(shù)據(jù)包數(shù)據(jù)解析等部分。

6.1 SlM卡初始化程序

在OpenAT嵌入式程序中,啟動(dòng)SIM卡初始化的聲明函數(shù)為adl_simSubscribe(bpt_SimInitHandler, )。其中,bpt_SimInitHandler為SIM卡

聲明返回函數(shù):



其中,事件ADL_SIM_EVENT_FULL_INIT表明SIM的初始化完成。

6.2 短信服務(wù)初始化程序

在OpenAT嵌入式程序設(shè)計(jì)中,當(dāng)返回函數(shù)返回狀態(tài)為ADL_SIM_EVENT_FULL_INIT時(shí),表明系統(tǒng)SIM卡初始化過程成功完成,系統(tǒng)可以進(jìn)入短信聲明流程。短信功能聲明函數(shù)為:

ptk_SmsHandler=adl_smsSubscribe((adl_smsHdlr_f)bpt_SmsDataHandler,\(adl_smsCtrlHdlr_f)bpt_SmsCtrlHandler,ADL_SMS_MODE_TEXT);

其中,ptk_SmsHandler為短信聲明函數(shù)返回句柄;bpt_SmsDataHandler為短信數(shù)據(jù)處理返回函數(shù);bpt_SmsCtrlHandler為短信發(fā)送狀態(tài)事件返回函數(shù);ADL_SMS_MODE_TEXT參數(shù)表示采用TEXT模式進(jìn)行短信數(shù)據(jù)傳輸。bpt_SmsDataHandler短信數(shù)據(jù)返回函數(shù)定義如下:



在該函數(shù)中,smsTel為接收到的短信電話號(hào)碼,smsTimeLength為TEXT模式下的短信時(shí)間戳,smsText為接收到的短信數(shù)據(jù)內(nèi)容。

SmsCtrlHandler短信發(fā)送事件返回狀態(tài)定義如下:



其中,ADL_SMS_EVENT_SENDING_OK事件表明短信發(fā)送成功。

6.3 SMS通信發(fā)送實(shí)現(xiàn)

對(duì)示例通信報(bào)文$S000000S0000AA100R1Y2W3R4Y5G6Y7W5B#來說,報(bào)文的頭和尾以及S服務(wù)器標(biāo)志為固定字節(jié);000000為終端訪問密碼,從Q24PL001模塊內(nèi)部Flash中調(diào)用;服務(wù)器ID碼0000及終端SIM卡號(hào)碼,同樣從內(nèi)部Flash中通過OpenAT嵌入式API函數(shù)adl_flhRead函數(shù)調(diào)用;命令字AA為固定命令字節(jié);報(bào)文內(nèi)容通過AT命令接收自上位機(jī)軟件。


評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉