短信 AT 命令參考

第三節 短消息實現方法
目前,主要有三種發送短信的方式:
1、 網關方式:就是向當地的電信部門申請,不需要額外的設備,適用於大型的通信公司,像華爲、傲天、中興、亞信等。
2、 終端方式:就是藉助像GSM MODEM之類的設置(支持AT指令的手機也行),通過數據線連接電腦,來發送短信,用這種方法比較適用於小型及個人。要實現這種方式必須理解串口通信、AT指令、短信編碼、解碼。
3、 利用一些網站來實現,方式簡單,不過對網站依賴性太高,對網絡的要求也比較高,非常不適於進行項目開發。
實際分析系統需求,我們採用終端方式實現短信的收發。
第四節               短消息編碼
在收發短信方面,按時間產生先後,共產生了三種模式:Block Mode、基於AT指令的Text Mode、基於AT指令的PDU Modem。 Text Mode是純文本方式,可使用不同的字符集,主要用於歐美地區。從技術上說也可用於發送中文短消息,但國內手機基本上不支持。PDU Mode被所有手機支持,可以使用任何字符集,這也是手機默認的編碼方式。PDU模式下短信息正文經過十六進制編碼後被傳送。目前,PDU已取代Block Mode,因此我們主要說明PDU模式的發送。
3.4.1 PDU模式的數據格式
PDU串表面上是一串ASCII碼,由‘0’-‘9’、 ‘A’-‘F’這些數字和字母組成。它們是8位字節的十六進制數,或者BCD碼十進制數。PDU串不僅包含可顯示的消息本身,還包含很多其它信息,如SMS服務中心號碼、目標號碼、回覆號碼、編碼方式和服務時間等。發送和接收的PDU串,結構是不完全相同的。我們先用兩個實際的例子說明PDU串的結構和編排方式。
2.1發送:SMSC號碼是+8613800591500,對方號碼是13950410716,消息內容是“Hello World!”。
PDU串是: 08 91 68 31 08 50 19 05 F0 11 00 0D 91 68 31 59 40 01 17 F6 00 00 00 0B E8 32 9B FD 06 DD DF 72 36 19
分段分析如下:
分段
含義
說明
 
08
SMSC地址信息的長度
共8個八位字節(包括91)
 
91
SMSC地址格式(TON/NPI)
用國際格式號碼(在前面加‘+’)
 
68 31 08 50 19 05 F0
SMSC地址
8613800591500,補‘F’湊成偶數個
 
11
基本參數(TP-MTI/VFP)
發送,TP-VP用相對格式
 
00
消息基準值(TP-MR)
0
 
0D
目標地址數字個數
共13個十進制數(不包括91和‘F’)
 
91
目標地址格式(TON/NPI)
用國際格式號碼(在前面加‘+’)
 
68 31 59 40 01 17 F6
目標地址(TP-DA)
8613950410716,補‘F’湊成偶數個
00
協議標識(TP-PID)
是普通GSM類型,點到點方式
00
用戶信息編碼方式(TP-DCS)
7-bit編碼
00
有效期(TP-VP)
5分鐘
06
用戶信息長度(TP-UDL)
實際長度6個字節
E8329BFD06DDDF723619
用戶信息(TP-UD)
“Hello World!”
 
SMSC地址格式(TON/NPI )說明:91—短信息中心號碼類型。91是TON/NPI遵守International/E.164標準,指在號碼前需加‘+’號。
具體格式如表所示:0x91 = 10010001
BIT No.
7
6
5
4
3
2
1
0
Name
1
數值類型
號碼鑑別
 
數值類型(Type of Number):000—未知,001—國際,010—國內,111—留作擴展;
號碼鑑別(Numbering plan identification):0000—未知,0001—ISDN/電話號碼(E.164/E.163),1111—留作擴展;
基本參數(TP-MTI/VFP)說明: TP-MTI/VFP是以位圖形式表示信息內容。
具體格式如表所示:0x11=00010001
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
 
應答路徑—TP-RP(TP-Reply-Path):
0—不設置;
1—設置
用戶數據頭標識—TP-UDHL(TP-User-Data-Header-Indicator):
0—不含任何頭信息;
1—含頭信息
狀態報告要求—TP-SPR(TP-Status-Report-Request):
0—需要報告;
1—不需要報告
有效期格式—TP-VPF(TP-Validity-Period-Format):
00—不提供(Not present);
10—整型(標準);
01—預留;
11—提供8位字節的一半(Semi-Octet Represented)
拒絕複製—TP-RD(TP-Reject-Duplicates):
0—接受複製;
1—拒絕複製
信息類型提示—TP-MTI(TP-Message-Type-Indicator):
00—讀出(Deliver);
01—提交(Submit)
協議標識TP-PIDTP-Protocol-Identifier ):
 
BIT No.
7
6
5
4
3
2
1
0
 
Bit No.7與Bit No.6:(一般將這兩位置爲00)
00—如下面定義的分配,參見GSM03.40協議標識完全定義;
01—10—預留;
11—爲服務中心(SC)特殊用途分配Bit No.0—Bit No.5。
Bit No.5:           0—不使用遠程網絡,只是短消息設備之間的協議;
1—使用遠程網絡。
Bit No.0—Bits No.4: 00000—隱含;
00001—電傳;
00010—group 3 telefax;
00100—語音;
00101—歐洲無線信息系統(ERMES);
00110—國內系統;
10001—任何基於X.400的公用信息處理系統;
10010—Email。
數據編碼方案TP-DCSTP-Data-Coding-Scheme):
 
BIT No.
7
6
5
4
3
2
1
0
 
Bit No.7與Bit No.6 :   一般設置爲00;
Bit No.5:           0—文本未壓縮
1—文本用GSM標準壓縮算法壓縮;
Bit No.4:                  0—表示Bit No.1、Bit No.0爲保留位,不含信息類型信息,
1—表示Bit No.1、Bit No.0含有信息類型信息;
Bit No.3與Bit No.2:   00—默認的字母表(7bit編碼)
01—8bit,
10—USC2(16bit)編碼
11—預留;
Bit No.1與Bit No.0:    00—Class 0,
01—Class 1,
10—Class 2(SIM卡特定信息),
11—Class 3。
 
2.2 接收: SMSC號碼是+8613800591500,對方號碼是13950410716,消息內容是“你好!”。
手機接收到的PDU串是: 08 91 68 31 08 50 19 05 F0 84 0D 91 68 31 59 40 01 17 F6 00 08 30 10 10 11 62 42 23 06 4F 60 59 7D 00 21
分段分析如下
分段
含義
說明
 
08
地址信息的長度
個八位字節(包括91)
 
91
SMSC地址格式(TON/NPI)
用國際格式號碼(在前面加‘+’)
 
68 31 08 50 19 05 F0
SMSC地址
8613800591500,補‘F’湊成偶數個
 
84
基本參數(TP-MTI/MMS/RP)
接收,無更多消息,有回覆地址
 
0D
回覆地址數字個數
共13個十進制數(不包括91和‘F’)
 
91
回覆地址格式(TON/NPI)
用國際格式號碼(在前面加‘+’)
 
68 31 59 40 01 17 F6
回覆地址(TP-RA)
8613950410716,補‘F’湊成偶數個
00
協議標識(TP-PID)
是普通GSM類型,點到點方式
08
用戶信息編碼方式(TP-DCS)
UCS2編碼
30 10 10 11 62 42 23
時間戳(TP-SCTS)
2003-01-01 11:26:24 23時區
06
用戶信息長度(TP-UDL)
實際長度6個字節
4F 60 59 7D 00 21
用戶信息(TP-UD)
“你好!”
 
3.4.2 PDU模式的信息編碼格式
    在上述說明中提到了在PDU Mode中,可以採用三種編碼方式來對發送的內容進行編碼,它們是7-bit、8-bit和UCS2編碼。7-bit編碼用於發送普通的ASCII字符,它將一串7-bit的字符(最高位爲0)編碼成8-bit的數據,每8個字符可“壓縮”成7個;8-bit編碼通常用於發送數據消息,比如圖片和鈴聲等;而UCS2編碼用於發送Unicode字符。PDU串的用戶信息(TP-UD)段最大容量是140字節,所以在這三種編碼方式下,可以發送的短消息的最大字符數分別是160、140和70。這裏,將一個英文字母、一個漢字和一個數據字節都視爲一個字符。
(1) 7-bit編碼
缺省的GSM 字符集爲7位編碼,可以簡單地理解爲ASCII碼(ASCII值小於80Hex,因此,Bit8被忽略),依次將下一7位編碼的後幾位逐次移至前面,形成新的8位編碼, GSM並非支持所有的ASCII字符顯示。
(2) 8-bit編碼
8-bit編碼通常用於發送數據消息,比如圖片和鈴聲等;8-bit編碼其實沒有規定什麼具體的算法。
(3) UCS2編碼
UCS2編碼是將每個字符(1-2個字節)按照ISO/IEC10646的規定,轉變爲16位的Unicode寬字符。在Windows系統中,特別是在2000/XP中,可以簡單地調用API 函數實現編碼和解碼。如果沒有系統的支持,比如用單片機控制手機模塊收發短消息,只好用查表法解決了。
需要注意的是,PDU串的用戶信息長度(TP-UDL),在各種編碼方式下意義有所不同。7-bit編碼時,指原始短消息的字符個數,而不是編碼後的字節數。8-bit編碼時,就是字節數。UCS2編碼時,也是字節數,等於原始短消息的字符數的兩倍。如果用戶信息(TP-UD)中存在一個頭(基本參數的TP-UDHI爲1),在所有編碼方式下,用戶信息長度(TP-UDL)都等於頭長度與編碼後字節數之和。如果採用GSM 03.42所建議的壓縮算法(TP-DCS的高3位爲001),則該長度也是壓縮編碼後字節數或頭長度與壓縮編碼後字節數之和
第四章 AT指令
AT指令在當代手機通訊中起着重要的作用,能夠通過AT指令控制手機的許多行爲,包括撥叫號碼、按鍵控制、傳真、GPRS等。
第一節 AT命令概述
因爲AT命令是作爲一個接口標準,所以它的命令和返回的值和格式都是固定的,總體上說AT命令有四種形式:
1. 無參數命令。它是一種單純的命令,格式是AT[+|&]<command>,如開機、顯示當前設置列表等: AT+ON、AT&V …
2. 查詢命令。它用來查詢該命令當前設置的值,格式是AT[+|&]<command>?,如: AT+CSCA?
3. 幫助命令。它是用來列出該命令的可能參數,格式是AT[+|&]<command>=?,如: AT+CMGL=?
4. 帶參數命令。它是應用最廣的一種格式,它爲命令提供了強大的靈活性,格式是
AT[+|&]<command>=<par1>,<par2>,<par3>…
作爲返回值,其情況就比較多樣,這在後面的命令詳解中將具體給出。但是返回值還是遵循一個大的框架格式:
<CR><LF><迴應字串><CR><LF><OK/ERROR>[: ERROR信息]
4.1.1AT命令詳細說明
以下給出了ZTE MZ28支持的AT命令和返回說明,其中:
1 默認參數值以下劃線標識。
2 []內的參數表示可選項。
3 如果需要設置後面[]參數值,則前面[]參數值以,分隔。
4 所有引號之外的空格被忽略。
5 數字字符串前面的0被忽略。
6 對於本版本模塊不支持的AT命令,將返回ERROR。
第二節 常用基本AT命令
(1) AT   測試連接是否正確
(2) ATE         Trigger Command Echo 回顯開關
ATE
OK
ATE<n>
觸發回顯,正確設置後,
返回: OK
參數說明
<n> 0 關閉回顯
1 打開回顯
參考V.25ter
(3) AT+CGMI    Read manufacture identification讀取廠商信息
AT+CGMI=
OK
AT+CGMI
返回廠商信息:
ZTE
OK
如錯誤返回: +CME ERROR:<err>
  (4)  AT+CGMM Request model identification讀取Model識別
AT+CGMM=?
OK
AT+CGMM
返回產品信息:
MZ28
OK
如錯誤返回: +CME ERROR:<err>
參考07.07
 
(5)         AT+CGMR  Request revision identification 讀取版本信息
 
AT+CGMR=
OK
AT+CGMR
返回版本信息:
<revision>
OK
如錯誤返回: +CME ERROR:<err>
 
參數說明 <revision> MZ28Vx.yy.zz 比如MZ28V1.00.00
參考07.07
(6)   AT+CSCS Set TE character set 選擇TE字符集
 
AT+CSCS=?
返回ME支持的字符集
+CSCS: (list of supported <chset>s)
OK
AT+CSCS?
返回當前TE選擇的字符集
+CSCS: <chset>
OK
AT+CSCS=<chset>
設置TE字符集,正確返回
OK
如錯誤返回: +CME ERROR:<err>
 
參數說明
< chset >: “GSM” GSM默認字符GSM Default Alphabet
“UCS2” 16bit Unicode
注意:該參數必須是大寫字母。
參考07.07
備註:
電話號碼的傳輸將不按照CSCS設置的字符集,因爲電話號碼足以用7bit來表示,這就是說即使chset=USC2,號碼還是按照IRA傳輸。其它文本(比如短消息內容,電話本姓名等)一律按照協議要求。
 
(7)       AT+CNUM Subscriber number 本機號碼
AT+CNUM=?
OK
AT+CNUM
返回本機號碼:
+CNUM:[<alpha1>],<number1>,<type1>[,<speed>,<service>[,<itc>]][<CR><LF>+CNUM:[<alpha2>],<number2>,<type2>[,<speed>,<service>[,<itc>]][………]]
OK
如錯誤返回:
+CME ERROR:<err>
 
參數說明
<alphax> 和number相關的字符
<numberx> 本機號碼
<typex> 號碼類型
<service> 4 Voice
<itc> 不支持
<speed> 不支持
(8)  AT+COPN Read operator names讀取運營商名字
AT+COPN=?
OK
AT+COPN
返回ME中存貯的運營商名字
+COPN:<numericl>,<alpha1>[<CR><LF>+COPN:<numeric2>,<alpha2>[...]]
OK
如錯誤返回:
+CME ERROR:<err>
 
參數說明
+COPS
以上這些指令都用於與手機連接的時候初始化用。取得手機IMEI及IMSI可以給使程序支持更多的手機連接並且保持數據獨立。
第三節 短消息命令
(1) AT+CSCA Service Center Address設置短消息服務中心地址
AT+CSCA=?
OK
AT+CSCA?
返回當前的服務中心地址:
+CSCA:<sca>,<tosca>
OK
如錯誤返回: +CMS ERROR:<err>
AT+CSCA=<sca>[,<tosca>]
選擇SM服務中心地址,如執行正確則返回: OK
如錯誤返回: +CMS ERROR:<err>
(2) AT+CMGF Message Format選擇短消息格式
AT+CMGF=?
返回所有支持的消息格式:
+CMGF:(list of supported <mode>s)
OK
如錯誤返回: +CMS ERROR:<err>
AT+CMGF?
返回當前的消息格式:
+CMGF:<mode>
OK
如錯誤返回: +CMS ERROR:<err>
AT+CMGF=[<mode>]
選擇消息格式,如執行正確則返回: OK
如錯誤返回: +CMS ERROR:<err>
 
參數說明: <mode> 0 PDU模式
1 TEXT模式
(3) AT+CMGR Read Message讀取短消息
AT+CMGR=?
OK
AT+CMGR=<index>
讀取存儲器中指定位置的消息(存儲器由+CPMS指定),返回格式:
TEXT模式下(+CMGF=1)且執行正確:
SMS-DELIVER:
+CMGR:<stat>,<oa>,[<alpha>],<scts>[,<tooa>,<fo>,<pid>,<dcs>,<sca>,<tosca>,<length>]<CR><LF><data>
OK
SMS-SUBMIT:
+CMGR:<stat>,<da>,[<alpha>][,<toda>,<fo>,<pid>,<dcs>,[<vp>],<sca>,<tosca>,<length>]<CR><LF><data>
OK
PDU模式下(+CMGF=0)且執行正確:
+CMGR: <stat>,[<alpha>],<length><CR><LF><pdu>
OK
如錯誤返回: +CMS ERROR:<err>
(4) AT+CMGS Send Message 發送短消息
AT+CMGS=?
OK
TEXT模式下(+CMGF=1)
AT+CMGS=<da>[,<toda>]<CR>
Text is entered <ctrl-Z/ESC>
PDU模式下(+CMGF=0)
AT+CMGS=<length><CR>
pdu is given <ctrl-Z/ESC>
ME向網絡發送短消息,成功時返回<mr>,當命令正確執行併成功發送時返回:
+CMGS:<mr>
OK
如錯誤返回: +CMS ERROR:<err>
參考GSM07.05
備註:
1 ctrl-Z表示輸入消息體的結束。
2 ESC表示放棄輸入消息體,重回command狀態,此時將返回ERROR。
3 PDU模式下TP-MTI支持SMS-DELIVER,SMS-SUBMIT和SMS-STATUS-REPORT,但不支持SMS-DELIVER-REPORT,SMS-SUBMIT-REPORT 和SMS-COMMAND。
(5) AT+CMGD Delete Message 刪除短消息
AT+CMGD=?
OK
AT+CMGD=<index>
刪除存儲器中<index>指定位置的消息(存儲器由+CPMS設置的<mem1>參數選指定)。如果index=0,將刪除全部短
消息。如命令執行正確返回:
OK
如錯誤返回:
+CMS ERROR:<err>  
(6) AT+CSMS Select Message Service 選擇短消息服務
AT+CSMS=?
返回所有支持的服務類型:
+CSMS:(list of supported <service>s)
OK
如錯誤返回:
+CMS ERROR:<err>
AT+CSMS?
返回當前的服務類型及ME支持的信息:
+CSMS:<service>,<mt>,<mo>,<bm>
OK
如錯誤返回: +CMS ERROR:<err>
AT+CSMS=<service>
選擇SMS類型,如執行正確則返回:
+CSMS:<mt>,<mo>,<bm>
OK
如錯誤返回: +CMS ERROR:<err>
 
參數說明:
<service> 0 Phase 2
128 廠商自己定義
<mt>    0 ME不能接收短消息
1 ME可以接收短消息
<mo>   0 ME不能發送短消息
1 ME可以發送短消息
<bm>   0 ME不能接收小區廣播
1 ME可以接收小區廣播
 
   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章