?

基于GSM模塊實現短信發送

2008-07-14 10:05
電腦知識與技術 2008年18期

苗 雨

摘要:短信的發送需要GSM模塊和處理器協作完成,GSM模塊與ARM處理器通過串口連接,處理器向串口發送接收AT命令與GSM模塊形成通信回路。中文短信的發送采用PDU模式,根據PDU模式標準形成PDU發送包,實現短信發送。本文根據無線電話項目的短信發送模塊的實際開發流程編寫,本文內容通過測試。

關鍵詞:GSM;SMS;AT命令;PDU

中圖分類號:TN929文獻標識碼: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年全國手機短信發送量達到5921億條,日均發送量超過16億條。短信的應用也擴展到各個領域,本文介紹了多媒體電話短消息發送模塊的實現原理和具體的實現方法。由短消息發送流程可以了解短信息發送過程的每一個環節,對短信息安全,屏蔽垃圾短信有一定的作用。

2 GSM模塊及GSM模塊的短信功能

GSM(Global System for Mobile communication)系統是目前基于時分多址技術的移動通訊體制中比較成熟、完善、應用最廣泛的一種系統。目前已建成的覆蓋全國的GSM數字蜂窩移動通信網,是我國公眾移動通信網的主要方式,主要提供話音、短信息、數據等多種業務?;贕SM短消息功能可以做成傳輸各種檢測、監控數據信號和控制命令的數據通信系統,能廣泛用于遠程監控、定位導航、個人通信終端等。由于公眾GSM網絡在全球范圍內實現了聯網和漫游,建立上述系統不須再組建專用通信網絡,所以具有實時傳輸數據功能的短消息應用將得到迅速普及。

SMS是由Etsi所制定的一個規范(GSM 03.40 和 GSM 03.38)。它可以發送最多160個字符,當使用7-bits編碼的時候,8-bit編碼(最多140個字符)通常無法直接通過手機顯示,通常被用來作為數據消息。16-bit信息(最多70個字符)被用來顯示Unicode(UCS2)文本信息,可以被大多數的手機所顯示。一個以class 0 開頭的16-bit的文本信息將在某些手機上作為Flash SMS顯示。

有兩種方式來發送和接收SMS信息:使用文本模式或者使用PDU(protocol description unit) 模式。

3 實現中文短信發送

GSM模塊支持兩種方式來發送和接收SMS短信息,文本模式和PDU(protocol description unit)模式,文本模式只能發送普通的Ascill字符,要發送圖片,鈴聲,其他編碼的字符(如中文)就必須采用PDU模式。

PDU模式中,可以采用三種編碼方式來編碼要發送的內容,分別是7bit編碼,8bit編碼,16bit編碼,7bit編碼用于發送普通的Ascill字符,8bit編碼通常用于發送數據信息,如圖片和鈴聲,而16bit編碼用于發送Unicode字符。三種編碼可以發送的最大字符分別是160,140,70。

發送中文短信要采用PDU模式的Unicode編碼方式,具體步驟描述如下:

(1)GB2321編碼到Unicode編碼的轉換

操作系統提供函數(有些系統不提供,如deltaos)

手動查表

(2)Unicode編碼到16bit編碼的轉換

得到的Unicode編碼后,還需要轉換成PDU的16bit編碼才可以正確的發送,這個轉換過程中

Unicode編碼最開始的0xffff標志要去掉,在0xffff之后的內容才是真正的Unicode字符。

Unicode是雙字節,根據系統如果是小端字節序(little-endian),也就是說,存儲的時候,先存低位再存高位,例如:“中”的Unicode編碼是0x4E2D,儲存的時候是2D4E,在轉換到16bit編碼的時候要轉換順序,如果是大端字節序(big-endian)如本系統,就不需要轉換了。

正確計算16bit編碼的消息體長度,PDU規范中,包括消息體本身;

正確設置First-Octet,TP-MR,TP-PID,TP-VP在PDU格式中,依次設置為:11,00,00,08,A7(以上都為16進制數)。

(3)形成標準的發送包。

3.1 短信發送過程分析

處理器通過向串口發送接收AT命令與GSM模塊形成通信回路,通過AT命令實現對GSM模塊的基本操作,用于發送短信的AT命令如表1所示:

表1 發送短信的AT命令

發送短信可用文本模式和協議數據單元模式(PDU,protocol data unit)。大多手機不支持文本模式,只支持PDU模式。PDU模式是把短信正文經十六進制編碼后被傳送,其編碼總體上分為三個部分:服務中心號、接收方手機號、短信內容,如“你好”短信PDU編碼是這樣的(其中xyz是手機號具體數字):0891683110200005F011000B8131208698yxFz0008FF044F605970,其意義如表2所示:

表2 發送數據分析

3.2 發送短信程序流程及主要函數

(1)接口函數_SendMessage()

當調用接口函數_SentMessage(unsigned char *message, unsigned char *telephone, unsigned char telephonetype)時,程序開始進入短信發送模塊,流程如圖1所示。

圖1SendMessage()函數流程圖

(2)發送短信主體函數Send_SMS();

完成 _SMS_appUnit結構填寫以后,短信發送的內容及所需信息提取到結構_SMS_appUnit中,為下面對數據的處理提供了原始數據,接下來就調用Send_SMS函數,函數中的結構_SMS_SUBMIT按照發送格式定義的結構體,把轉換后的標準數據存在結構_SMS_SUBMIT中,形成發送包。程序流程如圖2所示:

圖2 Send_SMS()函數流程圖

(3)數據處理函數MakeSSP()

函數MakeSSP是短信發送部分重要函數,把struct _SMS_appUnit結構中的數據轉換成struct _SMS_SUBMIT_PDU結構,形成發送包。

4總結

以上詳述了短信發送模塊實現的步驟,本文內容通過測試??梢詫崿F短信的發送,響應時間等參數符合要求。但如果要連續發送短信,或短信發送量要求比較高的情況還需要設計數據庫實現數據的管理。

參考文獻:

[1]北京科銀京成.Delta System用戶使用手冊[M].北京:北京科銀京成,2003.

[2]愛賽德無線小組.GSM模塊使用文檔(短信部分)[M].杭州:愛賽德無線小組,2002.

[3]Wavecom公司.AT Commands Interface[S].2000.

[4]杜春雷.ARM體系結構與編程[M].北京:清華大學出版社,2003.

收稿日期:2008-04-14

作者簡介:苗雨,男,碩士,研究方向:嵌入式系統、數據庫。

91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合