短信猫编程的一些资料1(At指令发送短信)
現(xiàn)在正在做TC35的項(xiàng)目,
下面分享一下這幾天在網(wǎng)上找到的資料:
手機(jī) SMS PDU 格式參考手冊(cè)?
?1.相關(guān)的GSM?? AT指令??
? 與SMS有關(guān)的GSM?? AT指令(from?? GSM07.05)如表1所示:??
? 表1?? 相關(guān)的GSM?? AT指令??
? AT?? 指令?? 功?????????????????????????????????????????? 能????
? AT+CMGC?? Send?? an?? SMS?? command(發(fā)出一條短消息命令)????
? AT+CMGD?? Delete?? SMS?? message(刪除SIM卡內(nèi)存的短消息)????
? AT+CMGF?? Select?? SMS?? message?? formate(選擇短消息信息格式:0-PDU;1-文本)????
????? AT+CMGL?? List?? SMS?? message?? from?? preferred?? store(列出SIM卡中的短消息PDU/text:?????? 0/“REC?? UNREAD”-未讀,1/“REC?? READ”-已讀,2/“STO?? UNSENT”-待發(fā),3/“STO?? SENT”-已發(fā),4/“ALL”-全部的)????
? 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ù))????
???
? 對(duì)短消息的控制共有三種模式:??
? ·?? Block?? Mode????
? ·?? 基于AT命令的PDU?? Mode????
? ·?? 基于AT命令的Text?? Mode????
? 使用Block模式需要手機(jī)生產(chǎn)廠家提供驅(qū)動(dòng)支持,目前,PDU?? Mode?? 已取代?? Block?? Mode,?? Text?? Mode比較簡(jiǎn)單,本文重點(diǎn)介紹模式PDU?? Mode,以西門子公司的產(chǎn)品TC35T為例。??
? 2.計(jì)算機(jī)與TC35T的通信??
? (1)RS232串口連接??
? 由于TC35T自帶RS232串口線,故只需將其連接到計(jì)算機(jī)串口即可。打開超級(jí)終端,選擇相應(yīng)的串口,將端口參數(shù)設(shè)置為:速率—4800、奇偶校驗(yàn)位—無、數(shù)據(jù)位—8、停止位—1、流量控制—硬件。??
? (2)連接測(cè)試??
? 輸入“AT”然后回車,屏幕上返回“OK”表明計(jì)算機(jī)與TC35T已連接成功,TC35T能夠正常工作。這時(shí)就可以測(cè)試各類AT命令。??
? 當(dāng)測(cè)試命令“AT+CMGS=?<CR>”時(shí),如果返回“OK”標(biāo)明TC35T支持該指令。該指令的完整語法如下:??
? ·?? 如果此時(shí)TC35T處于PDU?? Mode(即“AT+CMGF?<CR>”返回“0”)????
? AT+CMGS=<length><CR>PDU?? is?? given<^Z/ESC>??
? 如果短消息發(fā)送成功,則返回“OK”,并顯示信息號(hào):??
? +CMGS:?? <mr>[,<ackpdu>]??
? 如果短消息發(fā)送失敗,則返回如下信息號(hào):??
? +CMS?? ERROR:?? <err>??
? ·?? 如果此時(shí)TC35T處于Text?? Mode(即“AT+CMGF?<CR>”返回“1”)????
? AT+CMGS=<da>[,toda]<CR>text?? is?? entered<^Z/ESC>??
? 如果短消息發(fā)送成功,則返回“OK”,并顯示信息號(hào):??
? +CMGS:?? <mr>[,<scts>]??
? 如果短消息發(fā)送失敗,則返回如下信息號(hào):??
? +CMS?? ERROR:?? <err>??
? 另外,由于使用的是TC35T,當(dāng)有新的短消息到來時(shí),需要TC35T產(chǎn)生提示,使用指令“AT+CNMI”。該指令的完整語法如下:??
? AT+CNMI=[<mode>][,<mt>][,<bm>][,<ds>][,<bfr>]??
? 如果有新的短消息來到,則TC35T將自動(dòng)返回下列提示:??
? +CMTI:?? “SM”,?? <index>??
? 此時(shí)讀出<index>,然后用“AT+CMGR”指令即可讀出短消息內(nèi)容。??
? 3.PDU數(shù)據(jù)格式分析:??
? 例如,我們要將字符“Hi”字符發(fā)送到目的地“13677328099”??
? PDU字符串為:??
? 08?? 91?? 683108701305F0?? 11?? 00?? 0D?? 91?? 3176378290F9?? 00?? 00?? 00?? 02?? C834??
? ⑴08—短信息中心地址長(zhǎng)度。指(91)+(683108701305F0)的長(zhǎng)度。??
? ⑵91—短信息中心號(hào)碼類型。91是TON/NPI遵守International/E.164標(biāo)準(zhǔn),指在號(hào)碼前需加‘+’號(hào);此外還有其它數(shù)值,但91最常用。??
? 91—10010001??
? BIT?? No.?? 7?? 6?? 5?? 4?? 3?? 2?? 1?? 0????
? Name?? 1?? 數(shù)值類型?? 號(hào)碼鑒別????
???
? 數(shù)值類型(Type?? of?? Number):000—未知,001—國(guó)際,010—國(guó)內(nèi),111—留作擴(kuò)展;??
? 號(hào)碼鑒別(Numbering?? plan?? identification):0000—未知,0001—ISDN/電話號(hào)碼(E.164/E.163),1111—留作擴(kuò)展;??
? ⑶683108701305F0—短信息中心號(hào)碼。由于位置上略有處理,實(shí)際號(hào)碼應(yīng)為:8613800731500(字母F是指長(zhǎng)度減1)。這需要根據(jù)不同的地域作相應(yīng)的修改。??
? ⑴、⑵、⑶通稱短消息中心地址(Address?? of?? the?? SMSC)。??
? ⑷11—文件頭字節(jié)。??
? 11&h=00010001&b??
? BIT?? No.?? 7?? 6?? 5?? 4?? 3?? 2?? 1?? 0????
? Name?? TP-RP?? TP-UDHI?? TP-SPR?? TP-VFP?? TP-RD?? TP-MTI????
? Value?? 0?? 0?? 0?? 1?? 0?? 0?? 0?? 1????
???
? 應(yīng)答路徑—TP-RP(TP-Reply-Path):0—不設(shè)置;?? 1—設(shè)置??
? 用戶數(shù)據(jù)頭標(biāo)識(shí)—TP-UDHL(TP-User-Data-Header-Indicator):0—不含任何頭信息;?? 1—含頭信息??
? 狀態(tài)報(bào)告要求—TP-SPR(TP-Status-Report-Request):0—需要報(bào)告;?? 1—不需要報(bào)告??
? 有效期格式—TP-VPF(TP-Validity-Period-Format):00—不提供(Not?? present);?? 10—整型(標(biāo)準(zhǔn));01—預(yù)留;?? 11—提供8位字節(jié)的一半(Semi-Octet?? Represented)??
? 拒絕復(fù)制—TP-RD(TP-Reject-Duplicates):0—接受復(fù)制;?? 1—拒絕復(fù)制??
? 信息類型提示—TP-MTI(TP-Message-Type-Indicator):00—讀出(Deliver);?? 01—提交(Submit)??
? ⑸00—信息類型(TP-Message-Reference)??
? ⑹0B—被叫號(hào)碼長(zhǎng)度。??
? ⑺91—被叫號(hào)碼類型(同⑵)。??
? ⑻3176378290F9—被叫號(hào)碼,經(jīng)過了位移處理,實(shí)際號(hào)碼為“13677328099”。??
? ⑹、⑺、⑻通稱目的地址(TP-Destination-Address)。??
? ⑼00—協(xié)議標(biāo)識(shí)TP-PID(TP-Protocol-Identifier)??
? BIT?? No.?? 7?? 6?? 5?? 4?? 3?? 2?? 1?? 0????
???
? Bit?? No.7與Bit?? No.6:?? 00—如下面定義的分配Bit?? No.0—Bit?? No.5;01—參見GSM03.40協(xié)議標(biāo)識(shí)完全定義;10—預(yù)留;11—為服務(wù)中心(SC)特殊用途分配Bit?? No.0—Bit?? No.5。??
? 一般將這兩位置為00。??
? Bit?? No.5:0—不使用遠(yuǎn)程網(wǎng)絡(luò),只是短消息設(shè)備之間的協(xié)議;1—使用遠(yuǎn)程網(wǎng)絡(luò)。??
? Bit?? No.0—Bits?? No.4:00000—隱含;00001—電傳;00010—group?? 3?? telefax;00100—語音;00101—?dú)W洲無線信息系統(tǒng)(ERMES);00110—國(guó)內(nèi)系統(tǒng);10001—任何基于X.400的公用信息處理系統(tǒng);10010—Email。??
? ⑽00—數(shù)據(jù)編碼方案TP-DCS(TP-Data-Coding-Scheme)??
? BIT?? No.?? 7?? 6?? 5?? 4?? 3?? 2?? 1?? 0????
???
? Bit?? No.7與Bit?? No.6?? :一般設(shè)置為00;Bit?? No.5:0—文本未壓縮,1—文本用GSM標(biāo)準(zhǔn)壓縮算法壓縮;Bit?? No.4:0—表示Bit?? No.1、Bit?? No.0為保留位,不含信息類型信息,1—表示Bit?? No.1、Bit?? No.0含有信息類型信息;Bit?? No.3與Bit?? No.2:00—默認(rèn)的字母表,01—8bit,10—USC2(16bit),11—預(yù)留;Bit?? No.1與Bit?? No.0:00—Class?? 0,01—Class?? 1,10—Class?? 2(SIM卡特定信息),11—Class?? 3。??
? ⑾00—有效期TP-VP(TP-Valid-Period)????
? VP?? value(&h)?? 相應(yīng)的有效期????
? 00?? to?? 8F?? (VP+1)*5?? 分鐘????
? 90?? to?? A7?? 12小時(shí)+(VP-143)*30分鐘????
? A8?? to?? C4?? (VP-166)*1天????
? C5?? to?? FF?? (VP-192)*1?? 周????
???
? ⑿02—用戶數(shù)據(jù)長(zhǎng)度TP-UDL(TP-User-Data-Length)??
? ⒀C834—用戶數(shù)據(jù)TP-UD(TP-User-Data)“Hi”??
? 4.短消息編碼??
? 設(shè)需要發(fā)送的短消息內(nèi)容為“Hi”,使用的GSM字符集為7位編碼。首先將字符轉(zhuǎn)換為7位的二進(jìn)制,然后,將后面字符的位調(diào)用到前面,補(bǔ)齊前面的差別。例如:H翻譯成1001000,i翻譯成1101001,顯然H的二進(jìn)制編碼不足八位,那么就將i的最后一位補(bǔ)足到H的前面。那么就成了11001000(C8),i剩下六位110100,前面再補(bǔ)兩個(gè)0,變成00110100(34),于是“Hi”就變成了兩個(gè)八進(jìn)制數(shù)?? C8?? 34。??
? 5.短消息的發(fā)送與接收案例??
? 鑒于TC35(T)支持TEXT格式,我們?cè)谠囼?yàn)中主要測(cè)試該格式。??
? (1)設(shè)置短消息中心??
? AT+CSCA="+8613800731500"(短消息中心);????
? (2)設(shè)置短消息發(fā)送格式??
? AT+CMGF=1?? (1-TEXT;?? 0-PDU);????
? (3)發(fā)送短消息(短消息內(nèi)容為“test”)??
? AT+CMGS="13508485560"(目的地址)?? <cr>??
? >?? test?? ^z?? ;????
? (4)設(shè)置短消息到達(dá)自動(dòng)提示:?? 設(shè)置短消息到達(dá)提示當(dāng)短消息被接收,將獲取指令:?? +CMTI:"SM",INDEX(信息存儲(chǔ)位置)??
? AT+CNMI=1,1,0,0,1();??
? (5)獲取短消息內(nèi)容(Once?? more),假設(shè)INDEX=8。??
? AT+CMGR=8??
? 返回信息如下:??
? +CMGR:?? "REC?? UNREAD","+8613508485560",,"01/07/16,15:37:28+32",Once?? more??
? 6.注意事項(xiàng)??
? (1)短消息中心一般不會(huì)改動(dòng),如果短消息中心號(hào)碼改動(dòng),在使用“AT+CSCA”語句時(shí),記住TC35要重新啟動(dòng),否則TC35不能正常工作(TC35T不存在此問題)。??
? (2)某些SIM卡帶有密碼,啟動(dòng)時(shí)需要輸入密碼。?
轉(zhuǎn)載于:https://www.cnblogs.com/lxxhome/p/5329618.html
總結(jié)
以上是生活随笔為你收集整理的短信猫编程的一些资料1(At指令发送短信)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Educational Codeforc
- 下一篇: css中如何修改鼠标光标(指针)的样式和