苗 雨
摘要:短信的發(fā)送需要GSM模塊和處理器協(xié)作完成,GSM模塊與ARM處理器通過串口連接,處理器向串口發(fā)送接收AT命令與GSM模塊形成通信回路。中文短信的發(fā)送采用PDU模式,根據(jù)PDU模式標(biāo)準(zhǔn)形成PDU發(fā)送包,實(shí)現(xiàn)短信發(fā)送。本文根據(jù)無線電話項目的短信發(fā)送模塊的實(shí)際開發(fā)流程編寫,本文內(nèi)容通過測試。
關(guān)鍵詞:GSM;SMS;AT命令;PDU
中圖分類號:TN929文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)18-2pppp-0c
Design of Message Sending with GSM Module
MIAO Yu
(Zhuhai College of Jilin University,Zhuhai 519041,China)
Abstract:Sending a message needs GSM module and processor to work together. GSM module and ARM processor are connected through the series. AT order set is the communication protocol between the module and controller. Processor receives and sends AT order through series and forms the loop with the GSM module, then realizes the message sending and receiving. Sending message uses PDU mode. This article introduces the flow of actual research on message sending module.
Key words:GSM;SMS;AT order;PDU
1 引言
2007年全國手機(jī)短信發(fā)送量達(dá)到5921億條,日均發(fā)送量超過16億條。短信的應(yīng)用也擴(kuò)展到各個領(lǐng)域,本文介紹了多媒體電話短消息發(fā)送模塊的實(shí)現(xiàn)原理和具體的實(shí)現(xiàn)方法。由短消息發(fā)送流程可以了解短信息發(fā)送過程的每一個環(huán)節(jié),對短信息安全,屏蔽垃圾短信有一定的作用。
2 GSM模塊及GSM模塊的短信功能
GSM(Global System for Mobile communication)系統(tǒng)是目前基于時分多址技術(shù)的移動通訊體制中比較成熟、完善、應(yīng)用最廣泛的一種系統(tǒng)。目前已建成的覆蓋全國的GSM數(shù)字蜂窩移動通信網(wǎng),是我國公眾移動通信網(wǎng)的主要方式,主要提供話音、短信息、數(shù)據(jù)等多種業(yè)務(wù)?;贕SM短消息功能可以做成傳輸各種檢測、監(jiān)控數(shù)據(jù)信號和控制命令的數(shù)據(jù)通信系統(tǒng),能廣泛用于遠(yuǎn)程監(jiān)控、定位導(dǎo)航、個人通信終端等。由于公眾GSM網(wǎng)絡(luò)在全球范圍內(nèi)實(shí)現(xiàn)了聯(lián)網(wǎng)和漫游,建立上述系統(tǒng)不須再組建專用通信網(wǎng)絡(luò),所以具有實(shí)時傳輸數(shù)據(jù)功能的短消息應(yīng)用將得到迅速普及。
SMS是由Etsi所制定的一個規(guī)范(GSM 03.40 和 GSM 03.38)。它可以發(fā)送最多160個字符,當(dāng)使用7-bits編碼的時候,8-bit編碼(最多140個字符)通常無法直接通過手機(jī)顯示,通常被用來作為數(shù)據(jù)消息。16-bit信息(最多70個字符)被用來顯示Unicode(UCS2)文本信息,可以被大多數(shù)的手機(jī)所顯示。一個以class 0 開頭的16-bit的文本信息將在某些手機(jī)上作為Flash SMS顯示。
有兩種方式來發(fā)送和接收SMS信息:使用文本模式或者使用PDU(protocol description unit) 模式。
3 實(shí)現(xiàn)中文短信發(fā)送
GSM模塊支持兩種方式來發(fā)送和接收SMS短信息,文本模式和PDU(protocol description unit)模式,文本模式只能發(fā)送普通的Ascill字符,要發(fā)送圖片,鈴聲,其他編碼的字符(如中文)就必須采用PDU模式。
PDU模式中,可以采用三種編碼方式來編碼要發(fā)送的內(nèi)容,分別是7bit編碼,8bit編碼,16bit編碼,7bit編碼用于發(fā)送普通的Ascill字符,8bit編碼通常用于發(fā)送數(shù)據(jù)信息,如圖片和鈴聲,而16bit編碼用于發(fā)送Unicode字符。三種編碼可以發(fā)送的最大字符分別是160,140,70。
發(fā)送中文短信要采用PDU模式的Unicode編碼方式,具體步驟描述如下:
(1)GB2321編碼到Unicode編碼的轉(zhuǎn)換
操作系統(tǒng)提供函數(shù)(有些系統(tǒng)不提供,如deltaos)
手動查表
(2)Unicode編碼到16bit編碼的轉(zhuǎn)換
得到的Unicode編碼后,還需要轉(zhuǎn)換成PDU的16bit編碼才可以正確的發(fā)送,這個轉(zhuǎn)換過程中
Unicode編碼最開始的0xffff標(biāo)志要去掉,在0xffff之后的內(nèi)容才是真正的Unicode字符。
Unicode是雙字節(jié),根據(jù)系統(tǒng)如果是小端字節(jié)序(little-endian),也就是說,存儲的時候,先存低位再存高位,例如:“中”的Unicode編碼是0x4E2D,儲存的時候是2D4E,在轉(zhuǎn)換到16bit編碼的時候要轉(zhuǎn)換順序,如果是大端字節(jié)序(big-endian)如本系統(tǒng),就不需要轉(zhuǎn)換了。
正確計算16bit編碼的消息體長度,PDU規(guī)范中,包括消息體本身;
正確設(shè)置First-Octet,TP-MR,TP-PID,TP-VP在PDU格式中,依次設(shè)置為:11,00,00,08,A7(以上都為16進(jìn)制數(shù))。
(3)形成標(biāo)準(zhǔn)的發(fā)送包。
3.1 短信發(fā)送過程分析
處理器通過向串口發(fā)送接收AT命令與GSM模塊形成通信回路,通過AT命令實(shí)現(xiàn)對GSM模塊的基本操作,用于發(fā)送短信的AT命令如表1所示:
表1 發(fā)送短信的AT命令
發(fā)送短信可用文本模式和協(xié)議數(shù)據(jù)單元模式(PDU,protocol data unit)。大多手機(jī)不支持文本模式,只支持PDU模式。PDU模式是把短信正文經(jīng)十六進(jìn)制編碼后被傳送,其編碼總體上分為三個部分:服務(wù)中心號、接收方手機(jī)號、短信內(nèi)容,如“你好”短信PDU編碼是這樣的(其中xyz是手機(jī)號具體數(shù)字):0891683110200005F011000B8131208698yxFz0008FF044F605970,其意義如表2所示:
表2 發(fā)送數(shù)據(jù)分析
3.2 發(fā)送短信程序流程及主要函數(shù)
(1)接口函數(shù)_SendMessage()
當(dāng)調(diào)用接口函數(shù)_SentMessage(unsigned char *message, unsigned char *telephone, unsigned char telephonetype)時,程序開始進(jìn)入短信發(fā)送模塊,流程如圖1所示。
圖1SendMessage()函數(shù)流程圖
(2)發(fā)送短信主體函數(shù)Send_SMS();
完成 _SMS_appUnit結(jié)構(gòu)填寫以后,短信發(fā)送的內(nèi)容及所需信息提取到結(jié)構(gòu)_SMS_appUnit中,為下面對數(shù)據(jù)的處理提供了原始數(shù)據(jù),接下來就調(diào)用Send_SMS函數(shù),函數(shù)中的結(jié)構(gòu)_SMS_SUBMIT按照發(fā)送格式定義的結(jié)構(gòu)體,把轉(zhuǎn)換后的標(biāo)準(zhǔn)數(shù)據(jù)存在結(jié)構(gòu)_SMS_SUBMIT中,形成發(fā)送包。程序流程如圖2所示:
圖2 Send_SMS()函數(shù)流程圖
(3)數(shù)據(jù)處理函數(shù)MakeSSP()
函數(shù)MakeSSP是短信發(fā)送部分重要函數(shù),把struct _SMS_appUnit結(jié)構(gòu)中的數(shù)據(jù)轉(zhuǎn)換成struct _SMS_SUBMIT_PDU結(jié)構(gòu),形成發(fā)送包。
4總結(jié)
以上詳述了短信發(fā)送模塊實(shí)現(xiàn)的步驟,本文內(nèi)容通過測試??梢詫?shí)現(xiàn)短信的發(fā)送,響應(yīng)時間等參數(shù)符合要求。但如果要連續(xù)發(fā)送短信,或短信發(fā)送量要求比較高的情況還需要設(shè)計數(shù)據(jù)庫實(shí)現(xiàn)數(shù)據(jù)的管理。
參考文獻(xiàn):
[1]北京科銀京成.Delta System用戶使用手冊[M].北京:北京科銀京成,2003.
[2]愛賽德無線小組.GSM模塊使用文檔(短信部分)[M].杭州:愛賽德無線小組,2002.
[3]Wavecom公司.AT Commands Interface[S].2000.
[4]杜春雷.ARM體系結(jié)構(gòu)與編程[M].北京:清華大學(xué)出版社,2003.
收稿日期:2008-04-14
作者簡介:苗雨,男,碩士,研究方向:嵌入式系統(tǒng)、數(shù)據(jù)庫。