《電子技術應用》
您所在的位置:首頁 > 通信與網(wǎng)絡 > 解決方案 > 如何以OpenAT3.12為平臺將通信報文封裝進GSM Modem

如何以OpenAT3.12為平臺將通信報文封裝進GSM Modem

2010-12-12
來源:中電網(wǎng)

引  言
隨著經(jīng)濟的發(fā)展以及國內工農業(yè)領域的自動化程度的提高,越來越多的場合需要遠程監(jiān)控和操作的設備。基于GSM網(wǎng)絡短信息設備的領域,GSM Modem是必不可少的設備,本文討論目前應用廣泛的基于Wavecom公司Q24PL001模塊的GSM Modem嵌入式程序設計,以實現(xiàn)將短信數(shù)據(jù)通信報文封裝進GSM Modem,從而簡化上位機軟件的工作量。
本文以OpenAT3.12嵌入式開發(fā)平臺為例,討論如何將遠程控制和數(shù)據(jù)采集通信報文封裝進以Q24PL001模塊為主的GSM Modem。
1  OpenAT操作系統(tǒng)介紹
OpenAT是Wavecom公司為GPRS/GSM無線CPU開發(fā)的一款實時操作系統(tǒng),集成了內存分配、Flash管理、數(shù)據(jù)流管理、GPIO管理、總線管理、定時器管理等多種功能。底層為嵌入式API應用層,它包括程序初始化API、AT指令API、操作系統(tǒng)API、標準API、流控API、總線API等,包含了建立在OpenAT基礎之上的應用開發(fā)層函數(shù)庫。應用開發(fā)層(簡稱ADL)函數(shù)庫為開發(fā)人員提供了上層應用接口,簡化了嵌入式應用的開發(fā);同時還提供了嵌入式應用程序框架,包括消息解析器和服務聲明機制。基于以上原因,OpenAT應用程序開發(fā)人員在開發(fā)應用程序時,更多的時間用于調用服務處理函數(shù),使系統(tǒng)更專注于程序本身的優(yōu)化。
2  GSM Modom的硬件結構和應用程序
GSM模塊在工業(yè)領域中比較重要的一個應用就是用來做GSM Modem,這也是GSM模塊一個最簡單的應用。如圖1所示,一個常規(guī)通用GSM Modem的系統(tǒng)結構包括電源、RS232接口、GSM模塊、LED指示燈、SIM卡和天線等部分。

GSM Modem核心模塊采用Wavecom公司的無線CPU模塊Q24PL001。在Q24PL001模塊中,OpenAT與應用程序的結構關系如圖2所示。Q24PL001集成了ARM7內核的32位CPU,內嵌OpenAT操作系統(tǒng)內核,支持OpenAT嵌入式應用程序設計。
3  基于短信遠程控制系統(tǒng)的結構
如圖3所示,基于GSM網(wǎng)絡的短信遠程控制系統(tǒng)通常包括以下幾個部分:GSM Modem、上位機監(jiān)控終端、移動運營商的GSM網(wǎng)絡和GSM終端等。
在一般產品設計中,GSM Modem作為發(fā)送GSM短信息的工具使用。PC機通過RS232串口與GSM
Modem相連,根據(jù)通信協(xié)議處理短信數(shù)據(jù)將處理好的短信數(shù)據(jù)包打包,通過RS232串口發(fā)送一系列標準Ar指令控制GSM Modem,由其將短信數(shù)據(jù)包發(fā)送至終端系統(tǒng)。本文重點研究簡化上位機軟件,將數(shù)據(jù)處理過程交給GSM Modem嵌入式系統(tǒng)軟件處理的方法。
4  GSM短信遠程控制系統(tǒng)的通信報文設計
對于GSM遠程通信系統(tǒng),數(shù)據(jù)通信報文并無統(tǒng)一標準,設計者可以根據(jù)具體情況自由設計不同通信終端之間的數(shù)據(jù)通信報文。由于GSM網(wǎng)絡的短信數(shù)據(jù)通信接收端可以通過普通手機實現(xiàn)短信接收,所以必須在短信數(shù)據(jù)通信報文設計中進行數(shù)據(jù)加密設計,以防止非法用戶對GSM短信數(shù)據(jù)通信報文的破解和濫用,保證整個SMS短信控制系統(tǒng)的穩(wěn)定性。為了便于介紹,在此以非加密的GSM短信數(shù)據(jù)通信報文為例,介紹GSM短信通信報文的設計。
一個常用GSM短信數(shù)據(jù)通信報文設計格式如下:
其中,以$S作為短信數(shù)據(jù)通信報文的幀頭字節(jié);6個字符作為接收端的認證密碼;S/T代表本報文的發(fā)送方為GSMModem(S)或短信終端(T);報文內容受短信數(shù)據(jù)長度的限制,一般在100字節(jié)以下;以#作為報文的結束符。
基于如上報文定義,一條上位機發(fā)出的SMS報文示例如下:
$S000000S0000AA100RlY2W3R4Y5G6Y7W5B#
其中,$S為數(shù)據(jù)幀頭;000000為SMS終端默認的認證密碼;S表明本數(shù)據(jù)來自GSM
Modem;0000為服務器設備ID編號;AA表示當前數(shù)據(jù)命令;10為十六進制數(shù)據(jù)0x10,表示當前數(shù)據(jù)內容長度字節(jié);0R1G2W3R4G5G6Y7W為報文內容;5B為校驗碼;#為結束符。
同理,短信終端返回至GSM Modem的SMS報文示例為:
$S888888T0055CC1930RX1YX2YX3YX4YX5Y6Y7YXEF#
其中,$S為數(shù)據(jù)幀頭;888888為SMS上位機服務器端默認的認證密碼;T表明數(shù)據(jù)來自短信終端;0055為終端設備ID編號;CC表示當前返回數(shù)據(jù)命令;19為十六進制數(shù)據(jù)0x19,表明當前返回數(shù)據(jù)內容長度字節(jié);30RX1YX2YX3YX4YX5Y6Y7YX為返回數(shù)據(jù)內容;EF為校驗碼;#為結束符。
5 GSM Modem短信數(shù)據(jù)通信報文處理流程
采用常規(guī)的上位機軟件來進行設計,將數(shù)據(jù)通信報文整理好后再根據(jù)一系列的AT命令組合發(fā)送至GSM
Modem,同時還需要解析來自若干個SMS終端的數(shù)據(jù)通信報文。常規(guī)上位機服務器端軟件處理短信數(shù)據(jù)的流程如圖4所示。
上位機軟件數(shù)據(jù)處理過程中,需要不停地對GSMModem進行操作,響應GSM Modem接收到的數(shù)據(jù),處理發(fā)送數(shù)據(jù)包。在整個過程中,GSM Modem只作為數(shù)據(jù)傳輸工具,不參與任何的數(shù)據(jù)處理;而一般的SMS遠程監(jiān)控通信系統(tǒng)的通信報文多達幾十乃至上百條,會導致上位機軟件工作量非常大。為了便于上位機程序簡化開發(fā),結合Q24PL001模塊自身支持OpenAT嵌入式軟件的特點,將短信數(shù)據(jù)通信報文的發(fā)送處理和接收解析流程嵌入GSMModem內,只保留一些簡單的AT命令接口給上位機軟件控制,大大減小了上位機軟件的工作量。
6  基于OpenAT的通信協(xié)議報文封裝
OpenAT嵌入式操作系統(tǒng)是為廣泛的基于GSM/GPRS的模塊系統(tǒng)應用而設計的,用于實現(xiàn)嵌入式的短信數(shù)據(jù)通信協(xié)議報文封裝,可以大大提高GSM Modem硬件系統(tǒng)的資源利用率。基于OpenAT的程序設計流程分為SIM卡服務聲明、短信服務聲明、發(fā)送數(shù)據(jù)包處理和接收數(shù)據(jù)包數(shù)據(jù)解析等部分。
6.1  SlM卡初始化程序
在OpenAT嵌入式程序中,啟動SIM卡初始化的聲明函數(shù)為adl_simSubscribe(bpt_SimInitHandler,"
")。其中,bpt_SimInitHandler為SIM卡
聲明返回函數(shù):
其中,事件ADL_SIM_EVENT_FULL_INIT表明SIM的初始化完成。
6.2  短信服務初始化程序
在OpenAT嵌入式程序設計中,當返回函數(shù)返回狀態(tài)為ADL_SIM_EVENT_FULL_INIT時,表明系統(tǒng)SIM卡初始化過程成功完成,系統(tǒng)可以進入短信聲明流程。短信功能聲明函數(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模式進行短信數(shù)據(jù)傳輸。bpt_SmsDataHandler短信數(shù)據(jù)返回函數(shù)定義如下:
在該函數(shù)中,smsTel為接收到的短信電話號碼,smsTimeLength為TEXT模式下的短信時間戳,smsText為接收到的短信數(shù)據(jù)內容。
SmsCtrlHandler短信發(fā)送事件返回狀態(tài)定義如下:
其中,ADL_SMS_EVENT_SENDING_OK事件表明短信發(fā)送成功。
6.3  SMS通信協(xié)議發(fā)送實現(xiàn)
對示例通信報文$S000000S0000AA100R1Y2W3R4Y5G6Y7W5B#來說,報文的頭和尾以及S服務器標志為固定字節(jié);000000為終端訪問密碼,從Q24PL001模塊內部Flash中調用;服務器ID碼0000及終端SIM卡號碼,同樣從內部Flash中通過OpenAT嵌入式API函數(shù)adl_flhRead函數(shù)調用;命令字AA為固定命令字節(jié);報文內容通過AT命令接收自上位機軟件。
該數(shù)據(jù)通信協(xié)議發(fā)送時通過OpenAT嵌入式API函數(shù)adl_smsSend()函數(shù)發(fā)送。adl_smsSend函數(shù)定義如下:
adl smsSend(ptk SmsHandler,Telephone,Message,ADL_SMS_MODE_TEXT)
其中,ptk_SmsHandler為6.2節(jié)中短信聲明返回句柄;Telephone參數(shù)為目標的SIM卡號碼;Message為封裝好的SMS短信數(shù)據(jù)通信報文;ADL_SMS_MODE_TEXT表明采用TEXT格式的短信傳輸。
6.4  數(shù)據(jù)通信協(xié)議的接收處理
對于GSM Modem接收到的短信數(shù)據(jù)報文的處理,相當于發(fā)送短信數(shù)據(jù)報文的解包過程,主要過程在GetSmsDataPackage()函數(shù)中實現(xiàn)。處理后數(shù)據(jù)發(fā)送至上位機軟件格式為:
RES:0001,8,30RX1YX2YX3YX4YX5Y6Y7Y
返回數(shù)據(jù)通過串口發(fā)送至上位機,上位機軟件直接接收該字符串,即完成短信數(shù)據(jù)的接收過程。
7  GSM Modem AT命令設計
利用OpenAT操作系統(tǒng)自定義AT命令設計接口,定義GSM Modem對上位機的數(shù)據(jù)通信接口。AT命令聲明函數(shù)如下:
adl_atCmdSubscribe("AT+SETDIS",(adl_atCmdHandler_t)SetMode,ADL_CMD_TYPE_PARA∣ADL_CMD_TYPE_READ∣0x0041);
其中,參數(shù)"AT+SETDIS"為自定義的AT命令接口;SetMode為該AT命令的返回函數(shù);第3個參數(shù)為當前AT命令的類型,ADL_CMD_TYPE_PARA為鍵入?yún)?shù)型,ADL—CMD—TYPE—READ為讀參數(shù)型,0x0041為AT命令類型值,根據(jù)函數(shù)規(guī)定設置。
在SETDIS命令中,以“AT+SEDDIS=X,Y”類型為自定義命令的訪問接口。在返回函數(shù)中,第1個參數(shù)X作為SMS通信協(xié)議的命令字參數(shù),第2個參數(shù)Y作為SMS通信協(xié)議的數(shù)據(jù)報文內容參數(shù)。SMS數(shù)據(jù)報文目標接收終端SIM卡號碼由“AT+SETTEL”命令預設,該命令定義如下:
adl_atCmdSubscribe("AT+SETTEL",(adl_atCmdHandler_t)SetTel,ADL_CMD_TYPE_PARA∣ADL_CMD_TYPE_READ∣0x0041)}
該命令用于首次設置GSM Modem,將所有接收終端SIM卡號存入Q24PL001內部Flash內,以ID號標識。
上位機通過串口鍵人“AT+SETDlS=0,"0R1Y2W3R4 Y5G6Y7W"”,則GSM
Modem立即向相應ID為0的終端發(fā)出數(shù)據(jù)包為$S000000S0000AA100R1Y2W3R4Y5G6Y7W5B#完整數(shù)據(jù)。
8  上位機軟件的操作實現(xiàn)
相對于復雜的數(shù)據(jù)報文運算,以及復雜的AT命令發(fā)送GSM短信數(shù)據(jù)包的上位機軟件系統(tǒng)來說,將短信數(shù)據(jù)報文封裝進GSM Modem后,對GSM Modem的控制操作變得簡單,只需要一條簡單的AT命令,即可實現(xiàn)非常復雜的短信數(shù)據(jù)包的傳輸。同樣對于接收到的數(shù)據(jù),GSMModem完成數(shù)據(jù)包解包后,立即通過RS232串口輸出簡潔的響應字符串,大大簡化了上位機軟件的處理。經(jīng)過對GSM Modem進行短信協(xié)議報文封裝后的上位機軟件處理流程如圖5所示。
結  語
在系統(tǒng)穩(wěn)定性和實時性要求較高的通信領域中,相比在上位機軟件中進行協(xié)議處理,將GSM Modem進行嵌入式報文封裝處理簡單而又高效。另外,在很多無人值守的服務端平臺,只要保持GSM Modem開機,數(shù)據(jù)包數(shù)據(jù)處理即可以直接由GSM Modem完成,而無需上位機電腦開機,既方便了用戶操作,又保證了SMS通信系統(tǒng)的穩(wěn)定性。該設計已經(jīng)應用于南寧及深圳市智能交通誘導系統(tǒng)中,均取得較好的效果。
 
本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯(lián)系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:[email protected]
主站蜘蛛池模板: 精品国产亚洲人成在线 | 久久视屏这里只有精品6国产 | 精品玖玖玖视频在线观看 | 日本一区二区三区四区五区 | 国产精品99久久久久久宅男 | 91免费观看视频 | 亚洲综合久久久 | 99ri在线视频 | 99久久伊人一区二区yy5099 | 亚洲精品高清国产一线久久97 | 中文字幕va一区二区三区 | 久久久久欧美情爱精品 | 中文字幕久久亚洲一区 | 九久久 | 在线观看国产一级强片 | 91精品免费高清在线 | 国产三级在线观看视频 | 九九爱精品 | 国产精品久久久久久久久久免费 | 国产精品亚洲精品日韩已满 | 日韩在线精品视频 | 毛片a级三毛片免费播放 | 欧美精品99| 日韩亚洲一区二区三区 | 欧美亚洲精品一区 | 国产浮力第一页草草影院 | 国产成人在线视频免费观看 | 91精品手机国产露脸 | 国产在线观看免费人成小说 | 男女做性免费视频软件 | 又黄又爽又刺激的视频 | 日韩毛片大全免费高清 | 国产成人爱片免费观看视频 | 日韩精品一区二区三区中文在线 | 成人a毛片手机免费播放 | 黄页网站18以下禁止观看 | 国产一区二区免费不卡在线播放 | 成人一级片在线观看 | 亚洲天堂视频在线免费观看 | 久久女同互慰一区二区三区 | 天堂精品高清1区2区3区 |