- 相關(guān)推薦
基于GSM模塊的手機(jī)短信發(fā)送
摘 要 短信的發(fā)送需要GSM模塊和處理器協(xié)作完成,GSM模塊與ARM處理器通過串口連接,處理器向串口發(fā)送接收AT命令與GSM模塊形成通信回路。中文短信的發(fā)送采用PDU模式,根據(jù)PDU模式標(biāo)準(zhǔn)形成PDU發(fā)送包,實現(xiàn)短信發(fā)送。本文根據(jù)無線電話項目的短信發(fā)送模塊的實現(xiàn)開發(fā)流程編寫。
關(guān)鍵詞 GSM;SMS;AT命令;PDU
1 引言
2007年全國手機(jī)短信發(fā)送量達(dá)到5921億條,日均發(fā)送量超過16億條。短信的應(yīng)用也擴(kuò)展到各個領(lǐng)域,本文介紹了多媒體電話短消息發(fā)送模塊的實現(xiàn)原理和具體的實現(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)實現(xiàn)了聯(lián)網(wǎng)和漫游,建立上述系統(tǒng)不需再組建專用通信網(wǎng)絡(luò),所以具有實時傳輸數(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顯示。
3 實現(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è)置TYPE,TP-MR,TP-PID,TP-VP,在下文PDU格式中,依次設(shè)置為:11,00,00,08,01(以上都為16進(jìn)制數(shù))。
(3)形成標(biāo)準(zhǔn)的發(fā)送包。
3.1 短信發(fā)送過程分析
處理器通過向串口發(fā)送接收AT命令與GSM模塊形成通信回路,通過AT命令實現(xiàn)對GSM模塊的基本操作,用于發(fā)送短信的AT命令如表1所示。
發(fā)送短信可用文本模式和協(xié)議數(shù)據(jù)單元模式(PDU,protocol data unit)。大多手機(jī)不支持文本模式,只支持PDU模式。PDU模式是把短信正文經(jīng)十六進(jìn)制編碼后被傳送,其編碼總體上分為三個部分:服務(wù)中心號、接收方手機(jī)號、短信內(nèi)容,如“你好”短信PDU編碼是這樣的(其中xyz是手機(jī)號具體數(shù)字): 0011000B8131258698yxFz000801044F60597D,其意義如表2所示。
表1 發(fā)送短信使用的AT命令
AT命令
功能
例子
AT+CMGF
設(shè)置短信的格式,0=PDU模式(默認(rèn)),1=文本模式
AT+CMGF=0
AT+CSCA
獲取服務(wù)中心的號碼
AT+CSCA?
AT+CMGS
發(fā)送AT+CMGS= YYY ;其中 YYY 為TPDU的十進(jìn)制長度
AT+CMGS=19
接收到“”
響應(yīng)后發(fā)送短信內(nèi)容
表2 發(fā)送數(shù)據(jù)分析
接收號部分
短信內(nèi)容部分
00 11 00 0B 8131208698yxFz
000801 04 4F605970
00:SCA以00寫入,應(yīng)用默認(rèn)的服務(wù)中心地址,該服務(wù)中心地址用AT+CSCA指令寫入
11:PDU類型
00:TP-MR表示MR 消息參考
0B:接收號字符數(shù)
81:表示是國內(nèi)代碼
31258698yxFz:接收號 編碼時長度為奇數(shù)末尾追加“F”每兩個字節(jié)進(jìn)行位置交換,即13526889xyz
00:TP-PID協(xié)議標(biāo)示
08:TP-DCS數(shù)據(jù)編碼方式
01:TP-VP有效期
04:UDL用戶數(shù)據(jù)長度,用十六制表示
4F60597D:短信內(nèi)容的UNICODE編碼
如果發(fā)送成功,串口返回以下結(jié)果:
+CMGS: X 這里的X是個數(shù)字
OK
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所示。
圖1 SendMessage()函數(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ù),程序流程如圖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ā)送模塊實現(xiàn)的步驟,本文內(nèi)容通過測試?梢詫崿F(xiàn)短信的發(fā)送,響應(yīng)時間等參數(shù)符合要求。但如果要連續(xù)發(fā)送短信,或短信發(fā)送量要求比較高的情況還需要設(shè)計數(shù)據(jù)庫實現(xiàn)數(shù)據(jù)的管理。對于短信發(fā)送的信息安全問題,將是下一個階段的研究重點。
參考文獻(xiàn)
[1] SMS with the SMS PDU-mode [M].Siemens AG Version 1.2
[2]AT Command Set Siemens cellular engines version 2.10[S].Siemens AG,2001年
[3]愛賽德無線小組.GSM模塊使用文檔(短信部分)[M].杭州:愛賽德無線小組,2002
[4]杜春雷.ARM體系結(jié)構(gòu)與編程[M].北京:清華大學(xué)出版社,2003
【基于GSM模塊的手機(jī)短信發(fā)送】相關(guān)文章:
單片機(jī)控制GSM模塊實現(xiàn)短信收發(fā)的軟件設(shè)計03-20
基于PXI總線的數(shù)據(jù)采集模塊的設(shè)計03-07
基于GSM網(wǎng)絡(luò)的一機(jī)多號類業(yè)務(wù)研究03-07
基于ESMTP的電子郵件發(fā)送程序的設(shè)計與實現(xiàn)11-16
基于USB接口的數(shù)據(jù)采集系統(tǒng)-GSM功率測量VC++03-08
基于GPS/GSM的車載移動信息系統(tǒng)終端的研究03-07
基于PLD的嵌入式系統(tǒng)外存模塊設(shè)計03-18
基于DSP的擴(kuò)頻電臺基帶模塊的設(shè)計與實現(xiàn)03-18
基于Tvp5150的低功耗視頻解碼模塊11-22