• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 298  文章 - 377  trackbacks - 0
            <2013年6月>
            2627282930311
            2345678
            9101112131415
            16171819202122
            23242526272829
            30123456

            常用鏈接

            留言簿(34)

            隨筆分類

            隨筆檔案

            文章檔案

            相冊

            收藏夾

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            最近做了一個GPRS模塊的簡單測試,其中短消息方式比較簡單,同時也與其他GPRS模塊通用,現(xiàn)在將我的調(diào)試筆記寫下來。

            短消息方式:

            一、與短信相關(guān)的 AT 指令

            AT+CMGC   Send  an  SMS  command(發(fā)出一條短消息命令)    

            AT+CMGD   Delete  SMS  message(刪除 SIM 卡內(nèi)存的短消息)    

            AT+CMGF   Select  SMS  message  formate (選擇短消息信息收發(fā)格式: 0-PDU;1-文本) 

            AT+CMGL   List  SMS  message  from  preferred  store(列出 SIM 卡中的短消息

            AT+CMGR   Read  SMS  message(讀短消息)    

            AT+CMGS   Send  SMS  message(發(fā)送短消息)    

            AT+CMGW   Write  SMS  message  to  memory(向 SIM 內(nèi)存中寫入待發(fā)的短消息)

            AT+CMSS   Send  SMS  message  from  storage(從 SIN  |M 內(nèi)存中發(fā)送短消息)

            AT+CNMI   New  SMS  message  indications(顯示新收到的短消息)    

            AT+CPMS   Preferred  SMS  message  storage(選擇短消息內(nèi)存)    

            AT+CSCA   SMS  service  center  address(短消息中心地址)    

            AT+CSCB   Select  cell  broadcast  messages(選擇蜂窩廣播消息)   

            AT+CSMP   Set  SMS  text  mode  parameters(設(shè)置短消息文本模式參數(shù))

            AT+CSMS   Select  Message  Service(選擇短消息服務(wù))

            發(fā)送短消息有兩種方式:PDU和TEXT 模式

            二、 PDU 模式下發(fā)送中英文短消息

            AT+CMGF=0                           //首先將短信息格式設(shè)為PDU 模式

            AT+CSCS=“UCS2”           //設(shè)置字符格式為UCS2 模式

            AT+CSCA=”+86138XXXXXXXX”,145              //設(shè)置短消息服務(wù)中心地址

            注:對于中國移動的短信服務(wù)中心號是+861380xxxx500,其中xxxx是你所在的長途電話區(qū)號,不足4位就補(bǔ)0,比如我所在的北京是010,補(bǔ)0后是0100,就應(yīng)該+8613800100500。

            [PDU]數(shù)據(jù)單元格式定義為:

            以下例子發(fā)送“你好”到13912345678

            發(fā)送數(shù)據(jù)是:你好

            Unicode譯碼為:4F60597D

            AT+CMGS=019 //15(PDU 規(guī)約頭固定長度 15 字節(jié))+4(報文長度 4 個字節(jié))

            > 0011000D91683119325476F8000801044F60597D [ctrl-Z]

            00       //為SCA預(yù)留

            11       // FO 設(shè)置PDU 類型

            00       // MR 發(fā)送參考號

            0D       //DA 目的號碼長度

            91       //DA 目的號碼類型

            68       //DA 中國的區(qū)號

            3119325476F8   //DA 目的號碼編碼

            00       // PID 發(fā)送方式

            08       //DCS 編碼模式

            01       //VP 有效期

            PDU 中用戶數(shù)據(jù)前的PDU 頭的長度是15 字節(jié)

            04       //UDL 數(shù)據(jù)長度

            4F60597D    //UD 數(shù)據(jù)內(nèi)容Unicode 譯碼

            例子中目的號碼是一種內(nèi)存編碼方式,將每兩位數(shù)據(jù)位置互換,余下最后單位的補(bǔ) F ,如13912345678 編碼為3119325476F8。用戶使用PDU 模式發(fā)送中文短消息時只需按照上述例子,改變 TPDU 的十進(jìn)制長度、手機(jī)號碼編碼、報文長度和報文內(nèi)容Unicode 譯碼即可。

            設(shè)置DCS 編碼模式改變短消息發(fā)送等級:

            按照GSM08.38 協(xié)議約定,PDU 中的DCS 字段(Bit7…0)用于設(shè)置短消息內(nèi)容的編碼方式 和發(fā)送等級, 具體為Bit4 用于決定Bit1 和 Bit0 的設(shè)置是否有效 (1 為有效, 0 為無效) ;Bit1和Bit0 均設(shè)置為0 表示短消息發(fā)送等級為0 等級, 即直接發(fā)送至終端而不存放在SIM卡; Bit3 設(shè)置為 1 且Bit2 設(shè)置為 0 表示短消息內(nèi)容為 UCS2 編碼。上例中 DCS 字段為 08,即表示短消息內(nèi)容為 UCS2 編碼且無發(fā)送等級;若改為 18 則表示短消息內(nèi)容為 UCS2 編碼且按0 等級發(fā)送,即直接發(fā)送至目的終端。

            三、TEXT 模式發(fā)送短消息

                   TEXT模式只支持傳送英文及數(shù)字信息,但它的編碼要比PDU模式簡單很多,所以建議采用TXET模式發(fā)送和接受短消息。

            1、TEXT模式下發(fā)送中文短消息

            AT+CMGF=1                   //首先將短信息格式設(shè)為 TEXT 模式

            AT+CSCS=“UCS2”    //設(shè)置字符格式為UCS2 模式:

            AT+CSCA=”+86138XXXXXXXX”,145      //設(shè)置短消息服務(wù)中心地址

            注:對于中國移動的短信服務(wù)中心號是+861380xxxx500,其中xxxx是你所在的長途電話區(qū)號,不足4位就補(bǔ)0,比如我所在的北京是010,補(bǔ)0后是0100,就應(yīng)該+8613800100500。

            AT+CSMP=17,167,0,24  //設(shè)置短消息發(fā)送相關(guān)參數(shù):四參數(shù)分別為 FO、VP、PID 和 DCS,代表意義與 PDU 模式中參數(shù)相同,不同的是須以十進(jìn)制表示,24 表示短消息內(nèi)容為 UCS2 編碼且直接發(fā)送至目的終端,如改為 25 則表示短消息內(nèi)容為 UCS2 編碼且發(fā)送至SIM 卡存儲。

            發(fā)送:AT+CMGS= 手機(jī)號碼編碼[CR]

            收到[>]響應(yīng)后再發(fā)送

            [報文內(nèi)容Unicode 譯碼][ctrl-Z]

            以下例子發(fā)送“你好”到13912345678

            發(fā)送數(shù)據(jù)是:你好

            Unicode譯碼為:4F60597D

            AT+CMGS=” 00310033003900310032003300340035003600370038” //直接輸入手機(jī)號碼編碼

            > 4F60597D [ctrl-Z]

            用戶使用TEXT 模式發(fā)送中文短消息時只需按照上述例子,改變手機(jī)號碼編碼和報文內(nèi)容的Unicode 譯碼即可。

            2、TEXT模式下發(fā)送英文短消息

            AT+CMGF=1                   //首先將短信息格式設(shè)為 TEXT 模式

            AT+CSCS=“GSM”      //設(shè)置字符格式為GSM 模式

            AT+CSCA=”+86138XXXXXXXX”,145       //設(shè)置短消息服務(wù)中心地址

            注:對于中國移動的短信服務(wù)中心號是+861380xxxx500,其中xxxx是你所在的長途電話區(qū)號,不足4位就補(bǔ)0,比如我所在的北京是010,補(bǔ)0后是0100,就應(yīng)該+8613800100500。

            AT+CSMP=17,167,0,240            //設(shè)置短消息發(fā)送相關(guān)參數(shù):四參數(shù)分別為 FO、VP、PID 和DCS,代表意義與PDU 模式中參數(shù)相同,不同的是須以十進(jìn)制表示,240 表示短消息內(nèi)容為默認(rèn) GSM 編碼且直接發(fā)送至目的終端,如改為 241 則表示短消息內(nèi)容為 GSM 編碼且發(fā)送至SIM 卡存儲。

            發(fā)送:AT+CMGS= “13XXXXXXXXX” [CR]

            收到[>]響應(yīng)后再發(fā)送

            [報文內(nèi)容][ctrl-Z]

            以下例子發(fā)送“Hello”到13912345678

            報文是:Hello

            AT+CMGS=” 13912345678” //直接輸入手機(jī)號碼

            > Hello [ctrl-Z]

            使用TEXT 模式發(fā)送英文短消息時只需按照上述例子,改變手機(jī)號碼和報文內(nèi)容即可。

            以上為如何發(fā)送短信的方法,那又如何接受剛收到的短消息呢?接受剛收到的短消息有兩種方法:查詢終端方式和使用事件方式。查詢方式是先不處理網(wǎng)絡(luò)上 發(fā)來的信息,定期使用“AT+CMGL=0”命令讀取未讀取的短信,如果有就讀入,交給上級程序處理。然后將此短消息刪除,該方法簡單,但許多時候都在做 無用功,效率低下。實際中我們使用事件方式,通過AT+CNMI指令設(shè)置接收到的短信息存儲到SIM卡,并返回提示信息。

             

            短消息類(class)的概念:根據(jù)指定儲存的位置,短消息分為class 0 - 3四個類。也可以不指定類(no class),由ME按默認(rèn)設(shè)置進(jìn)行處理,存儲到內(nèi)存或者SIM卡中。在TPDU的TP-DCS字節(jié)中,當(dāng)bit7-bit4為00x1, 01x1, 1111時,bit1-bit0指出消息所屬類:

            00 - class 0:只顯示,不儲存
            01 - class 1:儲存在ME內(nèi)存中
            02 - class 2:儲存在SIM卡中
            03 - class 3:直接傳輸?shù)絋E
            GSM Modem一般都支持一條“AT+CNMI”指令,可用于設(shè)定當(dāng)有某類短消息到達(dá)時,如何處置它:只儲存在指定的內(nèi)存(易失的/非易失的)中,先儲存后通知TE,還是直接轉(zhuǎn)發(fā)到TE,等等。

             

            "AT+CNMI"指令語法為

            AT+CNMI=[<mode>[,<mt>[,<bm>[,<ds>[,<bfr>]]]]]

            mode - 通知方式:

              0 - 不通知TE。

              1 - 只在數(shù)據(jù)線空閑的情況下,通知TE;否則不通知TE。

              2 - 通知TE。在數(shù)據(jù)線被占用的情況下,先緩沖起來,待數(shù)據(jù)線空閑,再行通知。

              3 - 通知TE。在數(shù)據(jù)線被占用的情況下,通知混合在數(shù)據(jù)中一起傳輸。

            mt - 消息儲存或直接轉(zhuǎn)發(fā)到TE:

              0 - 儲存到默認(rèn)的內(nèi)存位置(包括class 3)

              1 - 儲存到默認(rèn)的內(nèi)存位置,并且向TE發(fā)出通知(包括class 3)

              2 - 對于class 2,儲存到SIM卡,并且向TE發(fā)出通知;對于其它class,直接將消息轉(zhuǎn)發(fā)到 TE

              3 - 對于class 3,直接將消息轉(zhuǎn)發(fā)到 TE;對于其它class,同mt=1

            bm, ds, bfr的含義,請參考相關(guān)標(biāo)準(zhǔn)文檔。一般不需要去關(guān)心它們。

            在程序中具體實現(xiàn)時,使用mode=2, mt="1",即AT+CNMI=2,1,0,0,0:比較簡單。對所有類型的短消息,只要在收到ME送來的"+CMTI"通知后,用"AT+CMGR"指令讀取消息內(nèi)容就行了。

            舉例如下:

            (藍(lán)色表示PC機(jī)發(fā)送的數(shù)據(jù),紅色表示模塊返回的數(shù)據(jù))

            AT+CMGF=1                                  //設(shè)置短消息格式為TEXT格式

            OK

            AT+CCS=”CSM”                            //設(shè)置字符格式為GSM模式

            OK

            AT+CSCA=”+8613800100500”,145     //設(shè)置短消息服務(wù)中心地址

            OK

            AT+CNMI=2,1,0,0,0                       //設(shè)置收到新短信存于SIM卡中并發(fā)CMTI通知

            OK

             

            +CMTI:”SM”,1             //收到了短信,自動彈出,其中1表示存在SIM中的序號

            AT+CMGR=1                                  //讀取短信,其中1要與上面序號對應(yīng)

            +CMGR:”REC UNREAD”,”8615810533873”,,”09/04/30,10:59:17+32”,145,36,0,0”8613800100500”,145,5

            ABCD                               //收到來自手機(jī)15810533873的短信,內(nèi)容為ABCD

             

            OK

            AT+CMGD=1                   //刪除短信,其中1為短信序號

            posted on 2014-10-19 10:06 聶文龍 閱讀(533) 評論(0)  編輯 收藏 引用
            亚洲国产精品人久久| 天天爽天天狠久久久综合麻豆| 亚洲午夜久久久影院| 国产精品一区二区久久精品涩爱| 久久久久无码精品| 亚洲欧美精品一区久久中文字幕 | 亚洲国产成人久久一区久久| 岛国搬运www久久| 久久午夜综合久久| 2020国产成人久久精品| 欧美成人免费观看久久| 久久精品国产免费观看三人同眠| 超级97碰碰碰碰久久久久最新| 一本色综合久久| 亚洲AV乱码久久精品蜜桃| 久久精品亚洲精品国产色婷| 国产欧美一区二区久久| 91精品观看91久久久久久| 欧美激情精品久久久久久久| 色播久久人人爽人人爽人人片AV| 久久精品成人欧美大片| 国产精品一区二区久久| 久久播电影网| 久久久久久人妻无码| 国产综合成人久久大片91| 久久久久亚洲AV无码观看| 久久99精品国产一区二区三区| 久久久国产精品| 日韩精品久久久久久久电影蜜臀| 国产99久久久国产精免费| 久久亚洲AV无码精品色午夜麻豆| 国产精品久久波多野结衣| 色婷婷狠狠久久综合五月| 99久久久精品免费观看国产| 婷婷久久综合| 国产高潮国产高潮久久久91 | 亚洲精品成人久久久| 成人国内精品久久久久一区| 亚洲国产精品成人AV无码久久综合影院 | AV无码久久久久不卡蜜桃| 久久综合综合久久狠狠狠97色88|