《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 一種短信收發(fā)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
一種短信收發(fā)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
摘要: 全球移動(dòng)通訊系統(tǒng)GlobalSystemofMobilecommunicaTION就是眾所周知的GSM,,是當(dāng)前應(yīng)用最為廣泛的移動(dòng)電話標(biāo)準(zhǔn)。全球超過200個(gè)國家和地區(qū)超過10億人正在使用GSM電話,。GSM標(biāo)準(zhǔn)的無處不在使得在移動(dòng)電話運(yùn)營商之間簽署"漫游協(xié)定"后用戶的國際漫游變得很平常。
Abstract:
Key words :

1.引言

全球移動(dòng)通訊系統(tǒng)Global System of Mobile communicaTION就是眾所周知的GSM,,是當(dāng)前應(yīng)用最為廣泛的移動(dòng)電話標(biāo)準(zhǔn)。全球超過200個(gè)國家和地區(qū)超過10億人正在使用GSM電話,。GSM標(biāo)準(zhǔn)的無處不在使得在移動(dòng)電話運(yùn)營商之間簽署"漫游協(xié)定"后用戶的國際漫游變得很平常,。GSM 較之它以前的標(biāo)準(zhǔn)最大的不同是他的信令和語音信道都是數(shù)字式的,因此GSM被看作是第二代(2G)移動(dòng)電話系統(tǒng),。這說明數(shù)字通訊從很早就已經(jīng)構(gòu)建到系統(tǒng)中,。GSM是一個(gè)當(dāng)前由3GPP開發(fā)的開放標(biāo)準(zhǔn)。同時(shí)嵌入式系統(tǒng)是“控制,、監(jiān)視或者輔助裝置,、機(jī)器和設(shè)備運(yùn)行的裝置”。從中可以看出嵌入式系統(tǒng)是軟件和硬件的綜合體,,還可以涵蓋機(jī)械等附屬裝置,。目前國內(nèi)一個(gè)普遍被認(rèn)同的定義是:以應(yīng)用為中心,、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪,、適應(yīng)應(yīng)用系統(tǒng)對功能,、可靠性、成本,、體積,、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。

2.短信收發(fā)原理

SMS 是一種存儲(chǔ)和轉(zhuǎn)發(fā)服務(wù),。也就是說,,短消息并不是直接從發(fā)送人發(fā)送到接收人,而始終通過 SMS 中心進(jìn)行轉(zhuǎn)發(fā),。如果接收人處于未連接狀態(tài)(可能電話已關(guān)閉),,則消息將在接收人再次連接時(shí)發(fā)送。短信息應(yīng)用于內(nèi)部管理,,業(yè)務(wù)系統(tǒng)和客戶服務(wù)系統(tǒng): A公司在全國已有100多個(gè)業(yè)務(wù)劃分區(qū)域,,日常工作中有大量諸如新商品信息、價(jià)格調(diào)整等業(yè)務(wù)資訊需要及時(shí)提供給所有區(qū)域經(jīng)理,,在應(yīng)用短信息之前,,主要通過電話或Email來完成這些事情,需要投入大量的人力來完成這些工作,,并且還經(jīng)常由于各種因素的影響而出現(xiàn)延誤的現(xiàn)象,,現(xiàn)在用短信息則可以快捷和輕松地完成這部分工作。涉及SMS管理的協(xié)議如圖1所示,。


圖中SME為短信實(shí)體,, SMSC為短信服務(wù)中心,SMCGWMS為SMS網(wǎng)關(guān),,HLR是歸屬位置寄存器,,用于永久儲(chǔ)存管理用戶和服務(wù)記錄的數(shù)據(jù)庫,MSC為移動(dòng)交換中心,,VLR為訪問位置寄存器,,含有用戶臨時(shí)信息的數(shù)據(jù)庫,交換中心服務(wù)訪問用戶時(shí)需要這些信息,。

短消息模塊的接入方式支持兩種模式:基于AT指令的teXT模式和基于AT指令的PDU模式,,它指的是短信息數(shù)據(jù)的編碼格式,文本模式只支持7-bit編碼,,只能發(fā)送純英文和數(shù)字信息,,而PDU模式支持7-bit編碼、8-bit編碼和UCS-2編碼,,其中后者可進(jìn)行Unicode編碼,。

GSM模塊采用標(biāo)準(zhǔn)AT指令集通信,,其中本系統(tǒng)用到的AT指令如表1所示。


表1 相關(guān)AT指令

3.GSM短信數(shù)據(jù)格式分析

3.1發(fā)送短信PDU字符串

由于短信模式選擇的是PDU格式,,因此對PDU的編碼和轉(zhuǎn)碼就變得很重要,。中文短信息的實(shí)現(xiàn)需要將GB2312的中文編碼轉(zhuǎn)換為代碼頁為CP936的Unicode編碼,PDU發(fā)送字符串?dāng)?shù)據(jù)格式中主要由短信中心地址,、文件頭字節(jié),、信息類型、目的地址,、協(xié)議標(biāo)識(shí),、數(shù)據(jù)編碼方案、有效期,、用戶數(shù)據(jù)長度和用戶數(shù)據(jù)組成,。代碼的含義如下所示:

08H:短信服務(wù)中心地址信息的長度,共8個(gè)八位字節(jié)(包括91) ,;

91H:短信服務(wù)中心地址格式,,用國際格式號(hào)碼,在前面加‘+’ ,;

68 31 08 20 01 05 F0H:短信服務(wù)中心地址,,8613800210500,補(bǔ)‘F’湊成偶數(shù)個(gè),;

11H:基本參數(shù),,協(xié)議數(shù)據(jù)單元類型,表示發(fā)送,,TP-VP用相對格式,;

00H :信息參考,00H表示參考本身號(hào)碼 ,;

0DH :對方手機(jī)號(hào)數(shù)字個(gè)數(shù),,共13個(gè)十進(jìn)制數(shù) ;

91H :對方手機(jī)號(hào),,用國際格式號(hào)碼,,在前面加‘+’ ;

68 31 21 43 65 87 F9H:對方手機(jī)號(hào)(TP-DA),,8613123456789,補(bǔ)‘F’湊成偶數(shù)個(gè),;

00H:協(xié)議標(biāo)識(shí)(TP-PID),,是普通GSM類型,點(diǎn)到點(diǎn)方式,;

08H:用戶信息編碼方式(TP-DCS),,主要用其1個(gè)字節(jié)的第2和第3位表示編碼方式,,08H表示為UCS-2編碼,最多發(fā)140個(gè)字符,;04H為8-bit編碼,,最多發(fā)140個(gè)字符;00H為7-bit編碼,,最多發(fā)160個(gè)字符,;

00H:有效期(TP-VP),5分鐘,;

04H:短信長度(TP-UDL),,實(shí)際長度4個(gè)字節(jié);

4F 60 59 7DH:用戶信息(TP-UD),,“你好”的Unicode編碼 ,。

3.2 短信接收PDU字符串

接收方PDU字符串的含義和發(fā)送方不同,同樣以“你好”為例,,接收方的PDU字符串為:08 91 68 31 08 20 01 05 F0 24 0D 91 68 31 67 24 47 63 F0 00 08 70 50 91 31 21 25 23 04 4F 60 59 7DH,,其含義如下:

08 91 68 31 08 20 01 05 F0H:短信服務(wù)中心,分析同發(fā)送相同,;

24H:協(xié)議數(shù)據(jù)單元類型基本參數(shù)(TP-MTI/VFP) ,,發(fā)送,TP-VP用相對格式,;

0DH:對方手機(jī)號(hào)數(shù)字個(gè)數(shù),;

91H:對方手機(jī)號(hào)(TON/NPI),用國際格式號(hào)碼(在前面加‘+’),;

68 31 67 24 47 63 F0H :對方手機(jī)號(hào)(TP-DA),,8613764274360,補(bǔ)‘F’湊成偶數(shù)個(gè),;

00H:協(xié)議標(biāo)識(shí)(TP-PID) ,,是普通GSM類型,點(diǎn)到點(diǎn)方式,;

08H:用戶信息編碼方式(TP-DCS) ,,分析同發(fā)送方;

70 50 91 31 21 25H:短信息發(fā)送時(shí)間(SCTS),,07年05月19日13時(shí)12分52秒,;

23H:發(fā)送時(shí)間對應(yīng)的時(shí)區(qū);

04H:短信長度(TP-UDL),,實(shí)際長度4個(gè)字節(jié),;

4F 60 59 7DH:用戶信息(TP-UD) ,“你好”的Unicode編碼。

4.系統(tǒng)組成

4.1硬件組成

系統(tǒng)由嵌入式Linux系統(tǒng)和西門子MC35模塊通過串行接口三線制連接而構(gòu)成,, MC35模塊通過串口1與嵌入式系統(tǒng)相連,,嵌入式系統(tǒng)配置包括50MHz 主頻的MPC860 32位處理器,16M SDRAM內(nèi)存,,2個(gè)RS232,,操作系統(tǒng)采用嵌入式Linux for PowerPC。MC35模塊由GSM基帶處理器,、電源專用集成電路,、射頻電路和閃速存儲(chǔ)器等部分組成,負(fù)責(zé)處理GSM蜂窩設(shè)備中的音頻,、數(shù)據(jù)信號(hào),,內(nèi)嵌的軟件部分執(zhí)行應(yīng)用接口和所有GSM協(xié)議棧的功能。GSM 是Global SySTem of Mobile communication(全球移動(dòng)通訊系統(tǒng))的英文縮寫,,是當(dāng)前應(yīng)用最為廣泛的移動(dòng)電話標(biāo)準(zhǔn),。全球超過200個(gè)國家和地區(qū)超過10億人正在使用GSM電話。所有用戶可以在簽署了"漫游協(xié)定"移動(dòng)電話運(yùn)營商之間自由漫游,。 GSM 較之它以前的標(biāo)準(zhǔn)最大的不同是它的信令和語音信道都是數(shù)字式的,,因此GSM被看作是 第二代 (2G)移動(dòng)電話系統(tǒng)。這說明數(shù)字通訊從很早就已經(jīng)構(gòu)建到系統(tǒng)中,。GSM是一個(gè)當(dāng)前由3GPP開發(fā)的開放標(biāo)準(zhǔn),。

4.2libcssl函數(shù)庫

為了實(shí)現(xiàn)短信收發(fā),需要在嵌入式Linux下通過串口發(fā)送一系列的AT指令,。串行通信是計(jì)算機(jī)與其它設(shè)備通信的常用方法,,在本系統(tǒng)中采用一個(gè)基于Linux的串行通信函數(shù)庫libcssl,可實(shí)現(xiàn)串行接口的異步事件驅(qū)動(dòng)并發(fā),。采用該方法,,用戶只要在服務(wù)器和數(shù)據(jù)源之間建立異步連接,編寫數(shù)據(jù)處理函數(shù),,而對數(shù)據(jù)源事件的監(jiān)測,、數(shù)據(jù)讀取、多事件的處理等操作是由操作系統(tǒng)內(nèi)部完成的,,因而,,很大程度上簡化了編程者的工作,同時(shí)保證了較高的資源利用率,。

libcssl函數(shù)庫提供給用戶多種基于事件驅(qū)動(dòng)方式的串行接口函數(shù),。其主要的函數(shù)有4類,分別進(jìn)行串口初始化,、收發(fā)數(shù)據(jù),、錯(cuò)誤信息和結(jié)束串口操作,。在使用某個(gè)串口之前,,應(yīng)調(diào)用初始化函數(shù),,為其設(shè)定相應(yīng)的參數(shù),使得收發(fā)雙方遵循相同的通信協(xié)議和數(shù)據(jù)格式,,同時(shí)通過初始化操作,,為串口數(shù)據(jù)源和采集服務(wù)器之間建立異步連接,分配采集句柄,。當(dāng)數(shù)據(jù)源通過串口向嵌入式系統(tǒng)發(fā)送數(shù)據(jù)時(shí),,該數(shù)據(jù)會(huì)被送入數(shù)據(jù)緩沖區(qū),并通過該數(shù)據(jù)源的采集句柄訪問該串口的事件回調(diào)函數(shù),,在該函數(shù)中完成數(shù)據(jù)的處理,。相關(guān)的函數(shù)如表2所示。

表2 libcssl函數(shù)庫中的主要函數(shù)


4.3軟件設(shè)計(jì)

使用了異步事件驅(qū)動(dòng)函數(shù)庫,,程序設(shè)計(jì)簡單而容易實(shí)現(xiàn),,程序主要由2部分組成,即主程序設(shè)計(jì)和回調(diào)函數(shù)程序設(shè)計(jì),,主程序只需做初始化和發(fā)送短信,,其余功能都放在回調(diào)函數(shù)中完成。

在主程序中,,各變量賦初值,,調(diào)用cssl_open函數(shù)打開串口,設(shè)定的參數(shù)為采用串口1,,即嵌入式Linux的ttyS0設(shè)備,,波特率9600bps,8位數(shù)據(jù)位,,1位停止位,,無奇偶校驗(yàn),無數(shù)據(jù)流控制,,定義串口接收數(shù)據(jù)緩沖區(qū)有數(shù)據(jù)輸入時(shí),,回調(diào)函數(shù)為callback函數(shù),該函數(shù)對數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)進(jìn)行分析處理,。通過發(fā)送AT+CMGF=0指令定義短信模式為PDU模式,,并判斷是否有短信需要發(fā)送。

回調(diào)函數(shù)中首先讀取輸入緩沖區(qū)內(nèi)容,,根據(jù)對標(biāo)志和緩沖區(qū)內(nèi)容的判斷,,可以得知回調(diào)事件是由哪個(gè)事件引起,分別加以處理,,由于每次向GSM模塊發(fā)送AT指令后,,模塊會(huì)發(fā)送OK或ERROR等響應(yīng)表示操作成功或失敗,所以在回調(diào)函數(shù)中一個(gè)很重要的功能就是判斷AT指令是否發(fā)送成功,為了區(qū)分不同AT指令的響應(yīng),,程序中采用狀態(tài)標(biāo)志,,表征系統(tǒng)發(fā)送AT指令的類型。在收到新短信后,,需要提取短信發(fā)送方電話號(hào)碼,、短信發(fā)送時(shí)間和短信內(nèi)容等相關(guān)信息,并加以存儲(chǔ),,提取的依據(jù)就是短信接收PDU字符串的編碼格式,。相關(guān)的流程圖如圖2和圖3所示。


圖2 主程序流程圖


5.結(jié)論

本文的創(chuàng)新之處在于提供了嵌入式Linux下GSM模塊的短信收發(fā)系統(tǒng)設(shè)計(jì)方法,,程序設(shè)計(jì)中利用串行接口驅(qū)動(dòng)函數(shù)庫libcssl,,以串口I/O事件驅(qū)動(dòng)設(shè)備的數(shù)據(jù)采集。短信收發(fā)采用PDU模式,,能夠處理中文,、英文和中英文短信。異步事件驅(qū)動(dòng)的架構(gòu)可以提高系統(tǒng)并發(fā)處理性能,,程序能夠執(zhí)行多個(gè)異步操作而不調(diào)用阻塞線程,,降低系統(tǒng)開銷。嵌入式系統(tǒng)加GSM模塊的系統(tǒng)組成體積小巧,,非常適合于偏遠(yuǎn)地區(qū)或移動(dòng)的數(shù)據(jù)采集系統(tǒng),。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。