當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]嵌入式GSM短信息接口的軟硬件設(shè)計(jì)

摘要:SMS短信息服務(wù)作為GSM網(wǎng)絡(luò)的一種基本業(yè)務(wù)已得到越來越多的系統(tǒng)運(yùn)營(yíng)商和系統(tǒng)開發(fā)商的重視,以GSM網(wǎng)絡(luò)作為數(shù)據(jù)無線傳輸網(wǎng)絡(luò),可以開發(fā)出多種前景極其樂觀的各類應(yīng)用。本文給出一個(gè)小型的嵌入式SMS中/英文短信息接口的設(shè)計(jì),并詳細(xì)討論P(yáng)DU模式的短信息格式和中文短信息軟件解碼的設(shè)計(jì)。

    關(guān)鍵詞:GSM SMS UTF-8 GB-2312 無線通信 無線數(shù)傳 遙控 中文編碼

引 言

  SMS(Short Message Service)短信息服務(wù)是GSM(Global System for Mobile Communication)系統(tǒng)中提供的一種GSM終端(手機(jī))之間,通過服務(wù)中心(Service Center)進(jìn)行文本信息收發(fā)的應(yīng)用服務(wù),其中服務(wù)中心完成信息的存儲(chǔ)和轉(zhuǎn)發(fā)功能。短信息服務(wù)作為GSM網(wǎng)絡(luò)的一種基本業(yè)務(wù),已得到越來越多的系統(tǒng)運(yùn)營(yí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)程檢測(cè)和控制等。典型的應(yīng)用有:變電站、電表、水塔、水庫(kù)或環(huán)保監(jiān)測(cè)點(diǎn)等監(jiān)測(cè)數(shù)據(jù)的無線傳輸和無線自動(dòng)警報(bào);遠(yuǎn)程無線控制高壓線路斷電器、加熱系統(tǒng)、防洪攔阻系統(tǒng)或其它機(jī)電系統(tǒng)的啟動(dòng)和關(guān)閉;車隊(duì)交通管理和控制指揮系統(tǒng);控制和監(jiān)測(cè)香煙、食品和飲料自動(dòng)售貨機(jī)的運(yùn)行狀態(tài)和存貨水平等等。

  由于GSM網(wǎng)絡(luò)在全國(guó)范圍內(nèi)實(shí)現(xiàn)了聯(lián)網(wǎng)和漫游,具有網(wǎng)絡(luò)能力強(qiáng)的特點(diǎn),用戶無需另外組網(wǎng),在極大提高網(wǎng)絡(luò)覆蓋范圍的同時(shí)為客戶節(jié)省了昂貴建網(wǎng)費(fèi)用和維護(hù)費(fèi)用。同時(shí),它對(duì)用戶的數(shù)量也沒有限制,克服了傳統(tǒng)的專網(wǎng)通信系統(tǒng)投資成本大,維護(hù)費(fèi)用高,且網(wǎng)絡(luò)監(jiān)控的覆蓋范圍和用戶數(shù)量有限的缺陷。比起傳統(tǒng)的集群系統(tǒng)在無線網(wǎng)絡(luò)覆蓋上具有無法比擬的優(yōu)勢(shì),加上GSM的SMS本身具備的數(shù)據(jù)傳送功能,都使得這些應(yīng)用得到迅速的普及。利用GSM短信息系統(tǒng)進(jìn)行無線通信還具有雙向數(shù)據(jù)傳輸功能,性能穩(wěn)定,為遠(yuǎn)程數(shù)據(jù)傳送和監(jiān)控設(shè)備的通信提供了一個(gè)強(qiáng)大的支持平臺(tái)。

1 SMS短信息的無線數(shù)傳監(jiān)視和控制

  通常情況,基于SMS短信息服務(wù)的無線數(shù)傳監(jiān)視和控制系統(tǒng)為一個(gè)點(diǎn)到多點(diǎn)的遠(yuǎn)程無線雙向數(shù)據(jù)通信和控制系統(tǒng),如圖1所示。系統(tǒng)的中心點(diǎn)為數(shù)據(jù)或監(jiān)控指揮中心,由計(jì)算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)、電子地圖和GSM通信接口組成。監(jiān)控中心主要完成各種信息和數(shù)據(jù)的收發(fā)和整理:一方面,接收各個(gè)監(jiān)控點(diǎn)上傳的信息和數(shù)據(jù),并把它們放入相應(yīng)的數(shù)據(jù)庫(kù)和分發(fā)給相應(yīng)的監(jiān)控計(jì)算機(jī),以實(shí)現(xiàn)對(duì)各個(gè)監(jiān)控點(diǎn)的監(jiān)控和管理;另一個(gè)方面,監(jiān)控中心響應(yīng)監(jiān)控計(jì)算機(jī)發(fā)出的對(duì)各個(gè)監(jiān)控點(diǎn)的控制信息,并且把這些信息下發(fā)到相應(yīng)的監(jiān)控點(diǎn)上,從而達(dá)到對(duì)監(jiān)控點(diǎn)設(shè)備進(jìn)行控制的目的。

2 GSM無線通信控制終端

  GSM無線通信控制終端為一個(gè)MC3的嵌入式系統(tǒng),具有如圖2所示的測(cè)量、數(shù)據(jù)采集、控制、無線通信功能。GSM無線通信控制終端通過GSM網(wǎng)絡(luò)和監(jiān)控中心進(jìn)行雙向的信息傳輸。它將測(cè)量和采集到的數(shù)據(jù)信息傳送到監(jiān)控中心,同時(shí)接收監(jiān)控中心的控制數(shù)據(jù),對(duì)設(shè)備實(shí)施相應(yīng)的控制。

3 GSM通信接口的硬件實(shí)現(xiàn)

  GSM無線通信控制終端的通信接口一般采用目前在市場(chǎng)上提供的可供二次開發(fā)的標(biāo)準(zhǔn)的GSM模塊,如TC35、FALCOM、WISMO3等。這些通信模塊都具備GSM無線通信的全部功能,并提供標(biāo)準(zhǔn)的UART串行接口,支持GSM 07.05所定義的AT命令集的指令。因此,MCU能非常方便地通過UART接口與GSM模塊連接,并直接使用AT命令就可以方便簡(jiǎn)潔地實(shí)現(xiàn)短信息的收發(fā)、查尋和管理。

  在我們?cè)O(shè)計(jì)的GSM無線通信控制終端中,采用的GSM通信模塊為FALCOM A2D,MCU使用的是Atmel公司的高速8位微控制器ATmage128。ATmega128芯片為64個(gè)引腳,內(nèi)部集成了4K字節(jié)的RAM、4K字節(jié)的EEPROM、128K字節(jié)的Flash以及2個(gè)UART串行接口等。由于采用了高性能的MCU,省掉了大量的外圍器件,如外擴(kuò)RAM、ROM存儲(chǔ)器等,使硬件結(jié)構(gòu)大大簡(jiǎn)化,提高了系統(tǒng)的可靠性。系統(tǒng)的硬件框圖如圖3所示。

4 基于GSM通信的軟件接口

  市場(chǎng)上提供的可供二次開發(fā)的標(biāo)準(zhǔn)的GSM模塊都支持GSM 07.05所定義的AT命令集的指令。因此,MCU通過UART串行接口直接向GSM模塊下發(fā)AT命令,就可以方便簡(jiǎn)潔地實(shí)現(xiàn)基于GSM的短信息SMS的收發(fā)、查尋和管理。表1列出了與SMS相關(guān)的一些常用的GSM AT指令。

表1 與SMS相關(guān)的常用GSM AT命令

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ù)GSM 07.05的定義,SMS短信息的發(fā)送和接收模式共有三種:Block模式、基于AT命令的Text模式和基于AT命令的PDU模式。使用Block模式需要模塊生產(chǎn)廠家提供驅(qū)動(dòng)支持;而用于中英文短信息傳送應(yīng)使用PDU模式,只傳送英文短信息(純文本格式)使用Text模式。Text模式的短信息發(fā)送和接收比較簡(jiǎn)單,如不需要傳送中文則最好采用Text模式發(fā)送和接收短信息。

  采用Text模式發(fā)送接收短信息的步驟分為初始化GSM模塊、發(fā)送文本短信息和接收短信息。下面一段簡(jiǎn)單的程序給出一個(gè)示例:

PRINT "AT+CSCA=";Chr(34);"+8613800210500";Chr(34) ‘設(shè)置短信息中心號(hào)碼

PRINT "AT+CMGF=1" ‘設(shè)置為Text模式

PRINT "AT+CMGS=";Chr(34);"13500123456";Chr(34) ‘發(fā)送一條短信息

PRINT "This is a test SMS";Chr(26)

PRINT "AT+CMGR=1" ‘讀取收到的一條

‘短信息

.

.

.

  該程序使用BASCOM-AVR高級(jí)語言編寫,其中PRINT語句的功能是通過URAT串行口發(fā)送字符串,Chr(34)代表ASCII字符(“),Chr(26) 代表ASCII字符(Ctrl-Z)。第一行語句設(shè)置短信息服務(wù)中心號(hào)碼,即通過串口發(fā)送以下字符串: AT+CSCA= "+8613800210500",其中+8613800210500為上海地區(qū)中國(guó)移動(dòng)的短信息服務(wù)中心號(hào)碼。第二行語句設(shè)置短信息發(fā)送格式:AT+CMGF=1,其中1表示采用Text模式。第三和第四行語句發(fā)送一條短信息到控制中心,AT命令的格式為:AT+CMGS= "13500123456"<cr>This is a test SMS<^Z>,其中控制中心的號(hào)碼為13500123456,短信息內(nèi)容為“This is a test SMS”,確認(rèn)控制字符為Ctrl-Z。第五行語句為讀取一條收到的短信息內(nèi)容:AT+CMGR=1,其中1表示收到的(在SIM卡中)第一條短信息。該指令發(fā)出后,如果GSM模塊中有接收到的短信息,則從UART接口返回如下信息(具體AT命令格式請(qǐng)參考GSM 07.05):

  +CMGR: "REC UNREAD","+8613508485560",,"02/10/16,15:37:28+32"

    xxxxxxxxxxxxxxxxxx (收到短信息的文本內(nèi)容)

5 基于PDU模式的中文短信息接收

  發(fā)送和接收中文或中/英文混合的短信息必須采用PDU模式。根據(jù)GSM 07.05的定義,只要控制器通過UART接口向GSM模塊下發(fā)AT命令,就可以直接讀取收到的PDU模式的短信息:

  PRINT "AT+CMGF=0" ‘設(shè)置為PDU模式

  PRINT "AT+CMGR=1"‘讀取接收的一條短信

‘息

在PDU模式下,GSM通信模塊的回答格式為:

+CMGR: <stat>,,<length><CR><LF><pdu>

  其中: stat表示該條短信息的狀態(tài),通常為0(未讀過,新的短信息)或1(已讀過);

Length為十進(jìn)制數(shù),表示pdu數(shù)據(jù)長(zhǎng)度減去短信息服務(wù)中心地址長(zhǎng)度,單位為字節(jié);

<CR><LF>為回車換行;

pdu為PDU模式的數(shù)據(jù)包。

  然后,要分析PDU數(shù)據(jù)包,根據(jù)PDU的數(shù)據(jù)格式將收到的中文信息和其它相關(guān)信息解析出來。

5.1 PDU數(shù)據(jù)包格式

  PDU數(shù)據(jù)包由兩部分構(gòu)成,短信息服務(wù)中心地址(SMSC address)和TPDU,表2為PDU數(shù)據(jù)包的格式,其中一個(gè)數(shù)據(jù)單元為一個(gè)字節(jié)。

  其中短信息服務(wù)中心號(hào)碼、發(fā)送源號(hào)碼、日期以及時(shí)間采用壓縮BCD碼表示,低位在前,高位在后。在本文的網(wǎng)絡(luò)補(bǔ)充版(http://www.dpj.com.cn)中給出了通過讀取短信息的AT命令(AT+CMGR=1)從GSM模塊讀到的一條PDU模式的短信息,并給出常見的數(shù)值與解釋。

5.2 PDU模式的純英文短信息解碼

  PDU模式的純英文短信息編碼使用GSM字符集的7位編碼,此時(shí)TP-DCS的值為00。如短信息內(nèi)容為英文字符“Hi”,首先將各個(gè)字符轉(zhuǎn)換為7位的標(biāo)準(zhǔn)二進(jìn)制ASCII碼,然后要將后面字符的低位逐位調(diào)整到前面,補(bǔ)齊前面的差別。例如:“H”的二進(jìn)制ASCII碼為1001000,“i” 二進(jìn)制ASCII碼為1101001;顯然H的二進(jìn)制編碼不足八位,那么就將后面字符i的最后一位補(bǔ)足到H的前面,就成了11001000(C8),i剩下六位110100,前面再補(bǔ)兩個(gè)0,變成00110100(34),于是“Hi”就變成了兩個(gè)八進(jìn)制數(shù) C834。由于PDU模式的純英文短信息采用7位編碼,解碼不方便,因此對(duì)于只需發(fā)送和接收純英文字符和數(shù)字符號(hào)的應(yīng)用,最好采用Text模式發(fā)送和接收短信息。

表2 PDU數(shù)據(jù)包格式(接收MSM)

備注 名稱 長(zhǎng)度 數(shù)據(jù)單元bit位
7 6 5 4 3 2 1 0
  SMSC地址長(zhǎng)度 1 N+1(十六進(jìn)制數(shù))
  SMSC地址類型 1 1 號(hào)碼類型 號(hào)碼表
  SMSC號(hào)碼 N 號(hào)碼第2位 號(hào)碼第1位
  號(hào)碼第4位 號(hào)碼第3位
  …… ……
  號(hào)碼第n位 號(hào)碼第n-1位
  TPDU第一字節(jié) 1                
最長(zhǎng)12字節(jié) 發(fā)送源號(hào)碼長(zhǎng)度 1 實(shí)際號(hào)碼位數(shù)k(十六進(jìn)制數(shù))
發(fā)送源號(hào)碼類型 1 1 號(hào)碼類型 號(hào)碼表
發(fā)送源號(hào)碼 M 號(hào)碼第2位 號(hào)碼第1位
號(hào)碼第4位 號(hào)碼第3位
   
號(hào)碼第k位 號(hào)碼第k-1位
  TP-PID 1      
  TP-DCS 1          
  TP-SCTS 7 年低位 年高位
  月低位 月高位
  日低位 日高位
  時(shí)低位 時(shí)高位
  分低位 分高位
  秒低位 秒高位
  時(shí)     區(qū)
  TP-UDL 1                
最長(zhǎng)140字節(jié) TP-UD短信息內(nèi)容 1                
1                
                 
                 
1                
1                

    5.3 中文短信息的解碼

  由于中文字的編碼是采用2個(gè)字節(jié)的編碼,因此發(fā)送和接收中文或中英文混合的短信息只能采用PDU模式。但在GSM標(biāo)準(zhǔn)中,中文編碼采用UTF-8的編碼,不是目前國(guó)內(nèi)常用的GB-2312編碼,故還需要進(jìn)行中文編碼的轉(zhuǎn)換,才能與采用GB-2313漢字庫(kù)相配合顯示漢字字型。

由于UTF-8和GB-2312編碼之間不存在一一對(duì)應(yīng)的線性關(guān)系,因此只能采用查表的方式進(jìn)行轉(zhuǎn)換。下面給出一個(gè)由UTF-8到GB-2312編碼轉(zhuǎn)換的算法。

  ① 建立UTF-8和GB-2312兩個(gè)中文編碼表,表中數(shù)據(jù)項(xiàng)為2個(gè)字節(jié)長(zhǎng)度的十六進(jìn)制的數(shù),代表一個(gè)中文編碼。兩個(gè)表的長(zhǎng)度分別為14 890字節(jié)(2×7445)。UTF-8編碼表按數(shù)據(jù)項(xiàng)值從小到大排序,而在GB-2312編碼表中,與UTF-8相同位置處為相同漢字的GB-2312碼字,如圖4所示。

 ?、?軟件解碼過程為:每次從PDU模式SMS數(shù)據(jù)包的TP-UD中取出兩個(gè)字節(jié),采用二分法快速數(shù)據(jù)查找算法,在UTF-8編碼表中找到其所在位置,然后在GB-2312表的相同位置處讀取相對(duì)應(yīng)的GB-2312編碼。解碼流程如圖5所示。

 ?、?二分法的最壞查找次數(shù)為lg2(n+1),UTF-8表的長(zhǎng)度n為7445,固最壞查找次數(shù)為13次,就是說一個(gè)中文編碼由UTF-8到GB-2312的轉(zhuǎn)換最多經(jīng)過13次比較查找就可完成。 這比采用簡(jiǎn)單的順序查表要快的多,大大減少了查表所花費(fèi)的時(shí)間,非常適合在一般的嵌入式系統(tǒng)中使用。

 ?、?盡管兩個(gè)漢字編碼表要占用近30 KB(如還需要GB-2312到UTF-8的轉(zhuǎn)換,則還要增加兩個(gè)表,共占60 KB),但由于采用了ATmega128單片機(jī),其片內(nèi)有128KB的程序存儲(chǔ)器,因此可將程序與表格放在一起。去掉60 KB的表格,仍有近70 KB的容量用于系統(tǒng)程序,因此完全不用外部擴(kuò)充存儲(chǔ)器(漢字字庫(kù)除外),大大簡(jiǎn)化了硬件的結(jié)構(gòu)和設(shè)計(jì)。

結(jié) 語

  本文的設(shè)計(jì)方案已應(yīng)用在我們研發(fā)的產(chǎn)品“車船載GPS-GSM衛(wèi)星定位無線通信移動(dòng)終端”上,經(jīng)過多年的運(yùn)行和使用,證明系統(tǒng)工作穩(wěn)定可靠。2001年10月,在美國(guó)著名計(jì)算機(jī)應(yīng)用雜志《CIRCUIT CELLAR》舉辦的世界性電子設(shè)計(jì)競(jìng)賽“Design Logic 2001 Contest”中,該產(chǎn)品獲得三等獎(jiǎng)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉