|
嵌入式GSM短信息接口的軟硬件設(shè)計 摘要:SMS短信息服務(wù)作為GSM網(wǎng)絡(luò)的一種基本業(yè)務(wù)已得到越來越多的系統(tǒng)運營商和系統(tǒng)開發(fā)商的重視,以GSM網(wǎng)絡(luò)作為數(shù)據(jù)無線傳輸網(wǎng)絡(luò),可以開發(fā)出多種前景極其樂觀的各類應(yīng)用。本文給出一個小型的嵌入式SMS中/英文短信息接口的設(shè)計,并詳細(xì)討論PDU模式的短信息格式和中文短信息軟件解碼的設(shè)計。 關(guān)鍵詞:GSMSMSUTF-8GB-2312無線通信無線數(shù)傳遙控中文編碼
引言 SMS(ShortMessageService)短信息服務(wù)是GSM(GlobalSystemforMobileCommunication)系統(tǒng)中提供的一種GSM終端(手機)之間,通過服務(wù)中心(ServiceCenter)進(jìn)行文本信息收發(fā)的應(yīng)用服務(wù),其中服務(wù)中心完成信息的存儲和轉(zhuǎn)發(fā)功能。短信息服務(wù)作為GSM網(wǎng)絡(luò)的一種基本業(yè)務(wù),已得到越來越多的系統(tǒng)運營商和系統(tǒng)開發(fā)商的重視,基于這種業(yè)務(wù)的各種應(yīng)用也蓬勃發(fā)展起來。以GSM網(wǎng)絡(luò)作為數(shù)據(jù)無線傳輸網(wǎng)絡(luò),可以開發(fā)出多種前景極其樂觀的各類應(yīng)用,如無線數(shù)據(jù)的雙向傳送、無線遠(yuǎn)程檢測和控制等。典型的應(yīng)用有:變電站、電表、水塔、水庫或環(huán)保監(jiān)測點等監(jiān)測數(shù)據(jù)的無線傳輸和無線自動警報;遠(yuǎn)程無線控制高壓線路斷電器、加熱系統(tǒng)、防洪攔阻系統(tǒng)或其它機電系統(tǒng)的啟動和關(guān)閉;車隊交通管理和控制指揮系統(tǒng);控制和監(jiān)測香煙、食品和飲料自動售貨機的運行狀態(tài)和存貨水平等等。
2GSM無線通信控制終端 GSM無線通信控制終端為一個MC3的嵌入式系統(tǒng),具有如圖2所示的測量、數(shù)據(jù)采集、控制、無線通信功能。GSM無線通信控制終端通過GSM網(wǎng)絡(luò)和監(jiān)控中心進(jìn)行雙向的信息傳輸。它將測量和采集到的數(shù)據(jù)信息傳送到監(jiān)控中心,同時接收監(jiān)控中心的控制數(shù)據(jù),對設(shè)備實施相應(yīng)的控制。 3GSM通信接口的硬件實現(xiàn) GSM無線通信控制終端的通信接口一般采用目前在市場上提供的可供二次開發(fā)的標(biāo)準(zhǔn)的GSM模塊,如TC35、FALCOM、WISMO3等。這些通信模塊都具備GSM無線通信的全部功能,并提供標(biāo)準(zhǔn)的UART串行接口,支持GSM07.05所定義的AT命令集的指令。因此,MCU能非常方便地通過UART接口與GSM模塊連接,并直接使用AT命令就可以方便簡潔地實現(xiàn)短信息的收發(fā)、查尋和管理。 在我們設(shè)計的GSM無線通信控制終端中,采用的GSM通信模塊為FALCOMA2D,MCU使用的是Atmel公司的高速8位微控制器ATmage128。ATmega128芯片為64個引腳,內(nèi)部集成了4K字節(jié)的RAM、4K字節(jié)的EEPROM、128K字節(jié)的Flash以及2個UART串行接口等。由于采用了高性能的MCU,省掉了大量的外圍器件,如外擴RAM、ROM存儲器等,使硬件結(jié)構(gòu)大大簡化,提高了系統(tǒng)的可靠性。系統(tǒng)的硬件框圖如圖3所示。 4基于GSM通信的軟件接口 市場上提供的可供二次開發(fā)的標(biāo)準(zhǔn)的GSM模塊都支持GSM07.05所定義的AT命令集的指令。因此,MCU通過UART串行接口直接向GSM模塊下發(fā)AT命令,就可以方便簡潔地實現(xiàn)基于GSM的短信息SMS的收發(fā)、查尋和管理。表1列出了與SMS相關(guān)的一些常用的GSMAT指令。
表1與SMS相關(guān)的常用GSMAT命令AT指令 功 能 AT+CMGD 刪除一條保存在SIM卡內(nèi)的短信息 AT+CMGF 選擇短信息格式:0為PDU方式:1為文本方式 AT+CMGL 列出SIM卡中的保存短信息 AT+CMGR 讀取SIM卡中指定一條短信息的內(nèi)容 AT+CMGS 發(fā)送一條短信息 AT+CSCA 設(shè)置短信息服務(wù)中心地址 根據(jù)GSM07.05的定義,SMS短信息的發(fā)送和接收模式共有三種:Block模式、基于AT命令的Text模式和基于AT命令的PDU模式。使用Block模式需要模塊生產(chǎn)廠家提供驅(qū)動支持;而用于中英文短信息傳送應(yīng)使用PDU模式,只傳送英文短信息(純文本格式)使用Text模式。Text模式的短信息發(fā)送和接收比較簡單,如不需要傳送中文則最好采用Text模式發(fā)送和接收短信息。 采用Text模式發(fā)送接收短信息的步驟分為初始化GSM模塊、發(fā)送文本短信息和接收短信息。下面一段簡單的程序給出一個示例: PRINT"AT+CSCA=";Chr(34);"+8613800210500";Chr(34)‘設(shè)置短信息中心號碼 PRINT"AT+CMGF=1"‘設(shè)置為Text模式 PRINT"AT+CMGS=";Chr(34);"13500123456";Chr(34)‘發(fā)送一條短信息 PRINT"ThisisatestSMS";Chr(26) PRINT"AT+CMGR=1"‘讀取收到的一條 ‘短信息 . . .
pdu為PDU模式的數(shù)據(jù)包。 然后,要分析PDU數(shù)據(jù)包,根據(jù)PDU的數(shù)據(jù)格式將收到的中文信息和其它相關(guān)信息解析出來。 5.1PDU數(shù)據(jù)包格式 PDU數(shù)據(jù)包由兩部分構(gòu)成,短信息服務(wù)中心地址(SMSCaddress)和TPDU,表2為PDU數(shù)據(jù)包的格式,其中一個數(shù)據(jù)單元為一個字節(jié)。 其中短信息服務(wù)中心號碼、發(fā)送源號碼、日期以及時間采用壓縮BCD碼表示,低位在前,高位在后。在本文的網(wǎng)絡(luò)補充版(http://www.dpj.com.cn)中給出了通過讀取短信息的AT命令(AT+CMGR=1)從GSM模塊讀到的一條PDU模式的短信息,并給出常見的數(shù)值與解釋。 5.2PDU模式的純英文短信息解碼 PDU模式的純英文短信息編碼使用GSM字符集的7位編碼,此時TP-DCS的值為00。如短信息內(nèi)容為英文字符“Hi”,首先將各個字符轉(zhuǎn)換為7位的標(biāo)準(zhǔn)二進(jìn)制ASCII碼,然后要將后面字符的低位逐位調(diào)整到前面,補齊前面的差別。例如:“H”的二進(jìn)制ASCII碼為1001000,“i”二進(jìn)制ASCII碼為1101001;顯然H的二進(jìn)制編碼不足八位,那么就將后面字符i的最后一位補足到H的前面,就成了11001000(C8),i剩下六位110100,前面再補兩個0,變成00110100(34),于是“Hi”就變成了兩個八進(jìn)制數(shù)C834。由于PDU模式的純英文短信息采用7位編碼,解碼不方便,因此對于只需發(fā)送和接收純英文字符和數(shù)字符號的應(yīng)用,最好采用Text模式發(fā)送和接收短信息。
表2PDU數(shù)據(jù)包格式(接收MSM)備注 名稱 長度 數(shù)據(jù)單元bit位 7 6 5 4 3 2 1 0 SMSC地址長度 1 N+1(十六進(jìn)制數(shù)) SMSC地址類型 1 1 號碼類型 號碼表 SMSC號碼 N 號碼第2位 號碼第1位 號碼第4位 號碼第3位 …… …… 號碼第n位 號碼第n-1位 TPDU第一字節(jié) 1 最長12字節(jié) 發(fā)送源號碼長度 1 實際號碼位數(shù)k(十六進(jìn)制數(shù)) 發(fā)送源號碼類型 1 1 號碼類型 號碼表 發(fā)送源號碼 M 號碼第2位 號碼第1位號碼第4位 號碼第3位 號碼第k位 號碼第k-1位 TP-PID 1 TP-DCS 1 TP-SCTS 7 年低位 年高位 月低位 月高位 日低位 日高位 時低位 時高位 分低位 分高位 秒低位 秒高位 時 區(qū) TP-UDL 1 最長140字節(jié) TP-UD短信息內(nèi)容 1 1 1 1 5.3中文短信息的解碼 由于中文字的編碼是采用2個字節(jié)的編碼,因此發(fā)送和接收中文或中英文混合的短信息只能采用PDU模式。但在GSM標(biāo)準(zhǔn)中,中文編碼采用UTF-8的編碼,不是目前國內(nèi)常用的GB-2312編碼,故還需要進(jìn)行中文編碼的轉(zhuǎn)換,才能與采用GB-2313漢字庫相配合顯示漢字字型。 由于UTF-8和GB-2312編碼之間不存在一一對應(yīng)的線性關(guān)系,因此只能采用查表的方式進(jìn)行轉(zhuǎn)換。下面給出一個由UTF-8到GB-2312編碼轉(zhuǎn)換的算法。 |