通常,發(fā)送和接收短信的終端都是通過(guò)串行接口連接電腦,這類(lèi)設(shè)備用得比較多的是GSM Modem和手機(jī)。這類(lèi)設(shè)備通常都支持PDU模式,但仍有少數(shù)設(shè)備只支持Text模式。
設(shè)備硬件連接好以后可以通過(guò)發(fā)送AT指令測(cè)試設(shè)備是否連接正確能否正常通訊。在這里我使用Windows自帶的“超級(jí)終端”工具進(jìn)行通訊。此工具可以在程序——附件——通訊里面找到,如果沒(méi)有請(qǐng)確認(rèn)是否安裝了此組件。或者在運(yùn)行里面輸入“hypertrm”也可以快速啟動(dòng)“超級(jí)終端”。
以下所有范例均以Siemens M55手機(jī)作為終端,有可能跟你設(shè)備返回的不同。具體參數(shù)清參閱設(shè)備相關(guān)AT指令集。本手機(jī)AT指令集在我主頁(yè)上有下載。
準(zhǔn)備工作:
1、 測(cè)試連接:“AT8 ”測(cè)試終端是否連接正確。成功后返回“OK”。
2、 設(shè)置回顯:(此步驟為了測(cè)試方便)ATE18
3、 查閱及設(shè)置字符集:
AT+CSCS=?8 +CSCS: ("GSM","UCS2") 說(shuō)明該終端支持GSM與UCS2兩種字符集。一般對(duì)于中文環(huán)境設(shè)置為UCS2 AT+CSCS="UCS2"8 4、 取得短信中心號(hào)碼:
AT+CSCA? 8 +CSCA: "+8613800280500",145 5、 查詢并設(shè)置SMS格式:
查詢:AT+CMGF= 8 返回:+CMGF: (0) 0代表PDU模式。你的設(shè)備可能有其他的選項(xiàng),請(qǐng)參考設(shè)備的AT指令集。 設(shè)置:AT+CMGF=08 6、 查詢并設(shè)置短信儲(chǔ)存位置:
查詢:AT+CPMS=?8 返回:+CPMS: ("MT","SM","ME"),("MT","SM","ME"),("MT","SM","ME") 其中MT表示設(shè)備所有可用儲(chǔ)存位置。SM代表SIM卡,ME代表機(jī)身。 一般設(shè)置為:AT+CPMS= "MT","MT","MT"8 查詢短信:
1、 查詢具有相同狀態(tài)的所有短信
指令:AT+CMGL=n 其中n代表0-4的數(shù)字。 0——未讀得短信。執(zhí)行命令以后自行變?yōu)橐炎x取。 1——已讀短信。 2——草稿。 3——已發(fā)送短信。 4——全部 返回(例): +CMGL: 76,3,,20 0891683108200805F011620D91683194041338F50000FF0530972D8603
76——序號(hào) 3——狀態(tài):發(fā)送
20——PDU串長(zhǎng)度
2、 查詢特定序號(hào)的短信
指令:AT+CMGR=n8 其中n代表序號(hào) 返回(例): +CMGR: 3,,20 0891683108200805F011620D91683195041338F50000FF0530972D8603 3——狀態(tài):發(fā)送 20——PDU串長(zhǎng)度 注意:PDU串長(zhǎng)度表示PDU中除去短信中心部分剩下的代碼的長(zhǎng)度的1/2。例如上述PDU中PDU長(zhǎng)度部分為11620D91683195041338F50000FF0530972D8603,40個(gè)字符,表示20個(gè)字節(jié)。
儲(chǔ)存PDU
指令: AT+CMGW=[PDU長(zhǎng)度] 8 >[PDU串] 例如: AT+CMGW=208 > 0891683108200805F011620D91683195041338F50000FF0530972D8603
注意,輸入PDU后按“CTRL+Z”終止。程序中使用0x1A,0x1D作為終止。 返回:+CMGW: 85
85——序號(hào) 發(fā)送PDU串
1、 發(fā)送輸入的PDU串
指令: AT+CMGS=[PDU長(zhǎng)度] 8 >[PDU代碼] 2、 發(fā)送指定序號(hào)的PDU串
指令: AT+CMSS=[序號(hào)] 8 接收短信
接收剛收到的短信有兩種方法:輪詢終端;使用事件
輪詢終端可以定期的使用AT+CMGL=0指令讀取未讀取得指令。方法簡(jiǎn)單,但許多時(shí)候都在做無(wú)用功,效率低下,一般不建議采用。下面主要講解事件法:
指令:
AT+CNMI=<mode>,<mt>,<bm>,<ds>,<brf> 參數(shù):
mode: 0——緩存在終端
1——直接發(fā)送到TE
mt:
0——接收到新的SMS不返回事件
1——如果接收到的SMS存儲(chǔ)在ME,則返回
+CMTI:<mem>,<index> 2——除了Class2 SMS,新的SMS直接發(fā)送到終端,返回:
+CMT:<length><CR><LF><PDU> 3——Class3 SMS使用mt=2的方法返回,其他類(lèi)型的使用mt=1的方法返回。
bm:
0——小區(qū)廣播不通知
2——新的小區(qū)廣播通知,返回
+CBM:<length><CR><LF><pdu> 3——Class3格式的小區(qū)廣播通知,使用bm=2格式
ds:
0——狀態(tài)報(bào)告不通知
1——新的狀態(tài)報(bào)告通知,返回:
+CDS:<length><CR><LF><pdu> 2——如果新的狀態(tài)報(bào)告存儲(chǔ)到ME,則返回:
+CDSI:<mem>,<index>
brf:
1——始終為1
例:
一般我們使用AT+CNMI=1,1,0,2,1
當(dāng)收到新的短信時(shí)終端返回:
+CMTI:ME,5
新的狀態(tài)報(bào)告:
+CDSI:ME,6
程序可以通過(guò)判斷返回值并使用AT+CMGR指令返回新到短信
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/qibingzheng/archive/2009/07/22/4369762.aspx |
|
來(lái)自: wfsy1983 > 《我的圖書(shū)館》