<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于單片機控制來實現(xiàn)手機收發(fā)短信息

          基于單片機控制來實現(xiàn)手機收發(fā)短信息

          作者: 時間:2011-08-26 來源:網(wǎng)絡(luò) 收藏

            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),能廣泛用于遠程監(jiān)控、定位導航、個人通信終端等。由于公眾GSM網(wǎng)絡(luò)在全球范圍內(nèi)實現(xiàn)了聯(lián)網(wǎng)和漫游,建立上述系統(tǒng)不須再組建專用通信網(wǎng)絡(luò),所以具有實時傳輸數(shù)據(jù)功能的短消息應(yīng)用將得到迅速普及。

            目前,人們設(shè)計的各類DTE設(shè)備基礎(chǔ)上以微處理器為核心,帶有RS232/RS485等通信接口,在物理層上很容易實現(xiàn)與GSM設(shè)置(如手機等)的連接。但對SMS協(xié)議的研究文獻卻較少,特別是用手機的SMS(Short Message Service)收發(fā)的研究更少。筆者在用單片機設(shè)計基于GSM的SMS數(shù)據(jù)采集器時,對怎樣用進行了探討。

            

          基于單片機控制來實現(xiàn)手機收發(fā)短信息

            1 串口控制SMS的工作原理

            單片機與手機一般采用串行異步通信接口,具有紅外和通信電纜兩種連接方式,通信速度可設(shè)定,通常為19200bps。采用紅外接口的優(yōu)點是單片機系統(tǒng)與手機電氣隔離,相互不干擾,接口各自獨立,使用方便;缺點是通信距離較短,紅外傳播的方向性對接口相對位置有要求。采用電纜連接時,數(shù)據(jù)傳輸?shù)目煽啃暂^好;其主要缺點是接口的電氣參數(shù)不兼容,設(shè)計不當時會對手機的通信質(zhì)量產(chǎn)生影響。筆者經(jīng)過實踐設(shè)計的接口電平轉(zhuǎn)換電路如圖1。

            GSM的短信息業(yè)務(wù)SMS利用信令信道傳輸,這是GSM通信網(wǎng)所特有的。它不用撥號建立連接,把要發(fā)的信息加上目的地址發(fā)送到短信息服務(wù)中心,經(jīng)短消息服務(wù)中心完成存儲后再發(fā)送給最終的信宿。所以當目的GSM終端沒開機時信息不會丟失。每個短消息的信息量限制為160字節(jié)。

            現(xiàn)在市場上大多數(shù)手機均支持GSM07.05規(guī)定的AT指令集。該指令集是ETSI(歐洲通信技術(shù)委員會)發(fā)布的,其中包含了對SMS的控制。利用GSM手機的串行接口,單片機向手機收發(fā)一系列的AT命令,就能達到控制手機收發(fā)SMS的目的。ETSI的GSM07.05中用于SMS收發(fā)控制的主要AT命令見表1。

            表1 常用AT指令

            GSM07.05

            Function(功能)

            ATE0

            RESET

            AT+CSMS

            選擇短信息服務(wù)

            AT+CPMS

            選擇短信息內(nèi)存

            AT+CMGF

            選擇短信息格式

            AT+CSCA

            短信息中心地址

            AT+CNMI

            顯示新收到的短信息

            AT+CMGR

            讀短信息

            AT+CMGS

            發(fā)送短信息

            AT+CMGL

            列出SIM卡中短信息

            AT+CMSS

            從SIM內(nèi)存中發(fā)短信息

            AT+CMGW

            向SIM內(nèi)存中寫入待發(fā)短信息

            AT+CMGD

            刪除SIM內(nèi)存中的短信息

            AT+CSCB

            選擇蜂窩廣播信息

            GSM手機通過異步通信接口實現(xiàn)對SMS的控制共有三種接入?yún)f(xié)議:Block Mode;基于AT命令的TextMode;基于AT命令的PDU Mode。PDU模式是發(fā)送或接收手機SMS信息的一種方法,短信息正文經(jīng)過十六進制編碼后被傳送。目前,PDU Mode應(yīng)用最為廣泛,基本上全國所有的電信局都提供支持PDU Mode的短消息業(yè)務(wù)。有些地址則不支持Text Mode和Block Mode,這就限制了這兩種接入?yún)f(xié)議的應(yīng)用,而且PDU Mode已有取代Block Mode的趨勢。為了保證系統(tǒng)具有廣泛的適用性,本文采用PDU模式收發(fā)SMS。

            PDU相當于一個數(shù)據(jù)包,它由構(gòu)成消息(SMS)的信息組成。作為一種數(shù)據(jù)單元,它必須包含源/目的地址、保護(有效)時間、數(shù)據(jù)格式、協(xié)議類型和正文,正文長度可達140字節(jié),它們都以十六進制表示。PDU結(jié)構(gòu)根據(jù)短消息由移動終端發(fā)起或以移動終端為目的而不同。

            當由移動終端發(fā)起時,PDU的格式為:

            SMSC

            PDU類型

            MR

            DA

            PID

            DCS

            VP

            UDL

            UD(0~140octed)

            當以移動終端為目的時,PDU的格式為:

            SMSC

            PDU類型

            OA

            PID

            DCS

            SCTS

            UDL

            UD(0~140octed)

            其中,SMSC為短消息業(yè)務(wù)中心地址,DA/OA為源/目的地址,PID為協(xié)議識別,DCS為數(shù)據(jù)編碼,UDL為用戶數(shù)據(jù)長度,UD為用戶數(shù)據(jù),VP為有效時間,MR指明是發(fā)出信息,SCTS指明短消息到達業(yè)務(wù)中心的時間。

            2 PDU格式下短信息的接收

            根據(jù)設(shè)置不同,手機將收到的短消息保存在緩存單元或存入SIM卡,單片機從手機中接收短消息實質(zhì)上就是從SIM或緩存中讀出信息。這主要利用AT+CMGR和AT+CMGL兩條指令來完成,其工作過程見圖2。

            由于不同的廠商對AT指令集的解釋代碼和響應(yīng)信息不一樣,所以單片機首先要確認能否與手機建立起通信,一般用ATE指令完成此確認;然后用AT+CMGF指令選定短消息的數(shù)據(jù)格式;在收到手機的正確回答反以AT指令完成讀出功能。一般用AT+CMGL讀取以前的信息,在收到手機的RING(振鈴)數(shù)據(jù)時,用AT+CMGR讀取實時信息。

            以下是筆者設(shè)計的物流數(shù)據(jù)采集系統(tǒng)中用到的接收SMS的一個實例,它說明了PDU模式的應(yīng)用。單片機發(fā)送和接收(手機回答)均為ASCII碼。所用手機為SIEMENS S3508i。

            操作過程如下({}內(nèi)為注釋):

            發(fā)送:ATE

            手機回答:OK {已建立聯(lián)接}

            發(fā)送:AT+CMGF=0 {選用PDU格式}

            手機回答:OK {允許選擇PDU格式}

            發(fā)送:AT+CMGL=2 {列出已有的短信息}

            手機回答:+CMGL:1,2,,24{1表示信息個數(shù),2表示未發(fā)信息,24表示信息總?cè)萘縸

            0D71683108370105F004000D81683179133208F1000002608041003380263218

          4CF682D

            95E0DC2B36D3D170A0243106933D97A0243106933D97A02451068B1983492608

            OK

            以上這組PDU格式的十六進制字符串,不但包含了短消息的內(nèi)容,同時包含了發(fā)送者的手機號碼、短信息中心號碼、短消息發(fā)送時間等。

            下面對信息內(nèi)容進行分析:

            0D:短信息中心地址(號碼)長度。

            91:短信息中心號碼類型,91是TON/NPI。TON/NPI遵守International/E.164標準,指在號碼前需加"+"號;此外還可直有其他數(shù)值,但91最常用。

            683108370105F0:SMSC 短信息所使用的服務(wù)中心號碼13807310500。它經(jīng)過十六進制以字節(jié)為單位的高低半字節(jié)換位處理,號碼是奇數(shù)的添F,構(gòu)成一個HEX字節(jié)。

            04:PDU類型,文件頭字節(jié)。

            0B:主叫號碼長度。

            81:主叫號碼類型。

            3179133208F1:0A主叫號碼,也經(jīng)過了處理,實際號碼為13973123801。

            00:PID,為協(xié)議標識。

            00:DCS短信息編碼類型是GSM Default Alphabet,即由7位ASCII碼移位組成8位十六進制碼(octet),其方法見表2。

            1sthex

            B0

            A6

            A5

            A4

            A3

            A2

            A1

            A0

            2ndhex

            C1

            C0

            B6

            B5

            B4

            B3

            B2

            B1

            3rdhex

            D2

            D1

            D0

            C6

            C5

            C4

            C3

            C2

            4thhex

            E3

            E2

            E1

            E0

            D6

            D5

            D4

            D3

            5thhex

            F4

            F3

            F2

            F1

            F0

            E6

            E5

            E4

            6thhex

            G5

            G4

            G3

            G2

            G1

            G0

            F6

            F5

            6thhex

            H6

            H5

            H4

            H3

            H2

            H1

            H0

            G6

            02608041003380:SCTS短信息發(fā)送時間,02/06/08/14:00:33.08。

            26:UDL經(jīng)處理后的8位碼(octet)短信息字節(jié)長度,它小于消息ASCII碼的長度。

            32184CF682D95E30DC2B36D3D170A0243106933D97A0243106933D97A0245

          1068B1983492608:UD 編碼后的PDU數(shù)據(jù),短信息內(nèi)容“2002/06/08/13:48ID102OKID103OK ID201FAIL”。

            3 短信息的發(fā)送

            與接收短信息一樣,發(fā)送時也要先建立聯(lián)接,傳送一些初始化指令,然后發(fā)送短消息內(nèi)容。下面是用SIEMENS S3508i發(fā)送一個短信息的例子,內(nèi)容為:“2002/06/08/13:48 ID102OK ID103OK ID201FAIL”。其ASCII碼為:“32030322F30362F30382F31333A34382049443130324F4B

            2049443130334F4B2049443230314641494C20”。

            發(fā)送:ATE {請求建立聯(lián)接}

            手機回答:OK {已建立聯(lián)接}

            發(fā)送:AT+CMGF=0 {選擇PDU模式}

            手機回答:OK

            發(fā)送:AT+CSMS=0{檢測手機是否支持SMS命令}

            手機回答:OK

            發(fā)送:AT+CMGS=52{發(fā)送短信息,52 octets(不包括最初9個短信息元字節(jié))}

            手機回答:>{允許上傳數(shù)據(jù),ASCII碼是($20H,$2EH)}

            發(fā)送:0891683108701305F011000B813179133208F10000AA2632184CF682D95

            E30DC2B36D3D170A0243106933D97A0243106933D97A02451068B19834926081A

            不計最初9個短消息信元字節(jié),本短信息有52字節(jié)(104個字符)。

            

          基于單片機控制來實現(xiàn)手機收發(fā)短信息

            AT+CMGS僅說明了SMSC信息內(nèi)容的長度,在收到手機回答的>符號手才發(fā)送PDU數(shù)據(jù)串,并以(CTRL^Z)結(jié)束。

            PDU數(shù)據(jù)串的內(nèi)容說明如下:

            08:短信息信元SMSC(短信息中心號碼)的字節(jié)長度

            91:短信息中心號碼類型,91表明中心號碼是國際通用電話號碼。

            683108701305F0:短信息中心號碼:8613807310500。

            11:PDU SMS發(fā)送的文件頭字節(jié)。這里11指正常發(fā)送短信息。

            00:信息類型。這里00指讓手機自動加上主叫號碼。

            0B:被叫號碼長度。

            81:被叫號碼類型。

            3179133208F1:被叫號碼13973123801。

            00:協(xié)議標識。

            00:短信息編碼類型是GSM Default Alphabet。

            AA:短信息被保留的時間為4天,其計算方法依照表3。

            VP值

            短消息有效時間長度

            0~143

            (VP+1)%26;#215;5分鐘

            144~167

            12時+(VP-143)%26;#215;30分

            168~196

            1天%26;#215;(VP-166)

            197~255

            1周%26;#215;(VP-192)

            26:PDU格式短信息編碼后字節(jié)長度。

            32184CF682D95E30DC2B36D3D170A0243106933D97A0243106933D

            97A02451068B1983492608:編碼后的PDU數(shù)據(jù),短信息內(nèi)容為“2002/06/08/13:

            48ID102OKID103OK ID201FAIL”。

            1A:ASCII碼CTRL^Z:報文結(jié)束標志。

            4 應(yīng)用情況及常見主要問題的解決

            筆者用MCS-51系列的單片機研制了一個手持式的數(shù)據(jù)采集產(chǎn)品,通過SIMEENS手機,利用GSM的SMS傳輸數(shù)據(jù)。經(jīng)過在國內(nèi)多個省市較大數(shù)量長期廣泛的使用,性能良好,沒有出現(xiàn)數(shù)據(jù)丟失的現(xiàn)象。證明上述設(shè)計用,性能良好,沒有出現(xiàn)數(shù)據(jù)丟失的現(xiàn)象。證明上述設(shè)計是正確的。但在調(diào)試和試用階段也遇到了如下問題:

            (1)接口電平

            手機的電纜接口電平一般是3V左右,單片機系統(tǒng)的工作電壓一般為2.7~5.5V,范圍較寬,為保證數(shù)據(jù)傳輸?shù)恼_,需在接口加電平限制電路,詳見圖1。

            (2)部分城市無法使用

            一些城市的SMS平臺不允許使用缺省短消息服務(wù)中心號碼的協(xié)議,只需在發(fā)送的PDU數(shù)據(jù)前面幾個字節(jié)加上中心號碼即可,詳見本文發(fā)送實例。

            (3)不能接收已正確發(fā)送的短消息

            除GSM的SMS信道擁塞原因外,主要是PDU中PID字節(jié)的設(shè)置,使得收到的信息要存入SIM卡,而SIM卡已滿,故不再接收信息。改變PID的設(shè)置即可。

            (4)收不到開機前的短消息

            主要是發(fā)送數(shù)據(jù)時,對短消息有效時間VP值設(shè)置不當造成的。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();