手機 SMS PDU 格式參考手冊
阿新 • • 發佈:2018-12-22
1、緒論
SMS提供了在GSM移動站臺(MS)與一個短訊息實體(SME)之間通過服務中心(SC)傳送短訊息的方法 。SC提供了在MS與SME之間訊息傳送的相互聯絡和轉播的功能。 SMS採用儲存轉發模式,短訊息被髮送出去之後,不是直接地傳送給接收方,而是先儲存在SMS( 短訊息服務中心),然後再由SMC將其轉發給接收方。如果接收方當時關機或不在服務區內,SMC 會自動儲存該短訊息,排隊並嘗試再次傳送給接收方。 點到點短訊息服務包含兩個基本服務:
Þ SM MT(點到點短訊息移動接收)
Þ SM MO(點到點短訊息移動傳送) 通過 SM MT 或 SM MO 方法傳送的文字訊息包含 140 個八位位組(最大 160 個拉丁字母字元、 70個雙位元組字元)。 本文僅僅給出了簡單地一些AT指令及SMS PDU模式的描述。更多的詳細資料,請參看下列標準: GSM 03.04 GSM 03.38 GSM 03.41 GSM 07.05 GSM 07.07 2、縮寫詞
縮寫 全稱 說明
MS: Mobile-Station 移動站臺
負責系統交換管理,控制來自或發往其他電話或資料系統的 通訊
SME: Short-Message-Entity 短訊息實體
負責接收和傳送短訊息。可以位於固話系統、移動基站或 其他服務中心內
SMSC: Short Message Service Center 短訊息服務中心
負責在移動基站和SME之間中繼、儲存或轉發短訊息
PDUs: Protocol Data Units 協議資料單元
PDU Type: Protocol Data Unit Type 協議資料單元型別
MR: Message Reference 訊息參考
OA: Originator Adress 傳送方地址
DA: Destination Adress 接收方地址
PID: Protocol Identifier 協議標識
DCS: Data Coding Scheme 資料編碼方案
SCTS: Service Center Time Stamp 服務中心的時間戳
VP: Validity Period 訊息有效期
UDL: User Data Length 使用者資料長度
UD: User Data 使用者資料
RP: Reply Path 應答路徑
UDHI: User Data Header Indicator 使用者資料頭標識
SRI: Status Report Indication 狀態報告指示
SRR: Status Report Request 請示狀態報告
VPF: Validity Period Format 有效期格式
MMS: More Messages to Send 有更多的資訊需要傳送
RD: Reject Duplicate 拒絕複本
MTI: Message Type Indicator 訊息型別指示
ME: Mobile Equipment 移動裝置
TE: Terminal Equipment 終端裝置
SIM: Subscriber Identity Modul
SC: Service-Center 服務中心
SCA: Service Center Address 服務中心地址
SM MT: Short Message Mobile Terminated Point-to-Point 點到點短訊息移動接收
SM MO: Short Message Mobile Originaed Point-to-Point 點到點短訊息移動傳送
3、設定指令
3.1 服務中心號碼 (+CSCA)
服務中心(SC)負責轉播和儲存轉發SME和MS之間的短訊息。如果MS支援SMS-MO(短訊息服務移動 傳送),為了使用SMS,必須在MS中設定SMSC(短訊息服務中心,SCA)。 使用指令 “AT+CSCA?” 可以檢視儲存在SIM卡中的當前服務中心地址。 使用AT指令 “AT+CSCA=<SCA>[,<TOSCA>]” 加入短訊息服務號碼。 句法: 輸入 執行 註釋
AT+CSCA? <CR> 查詢當前服務中心地址(SCA)設定(從SIM卡中讀取)
響應
+CSCA: “<SCA>” OK
AT+CSCA=“<SCA>” <CR> 定義服務中心地址(SCA) (儲存到SIM卡)
引數: <SCA> 服務中心地址(字元型)
<TOSCA> 服務中心地址的型別設定(編碼方式)
示例: AT+CSCA=“+8613800250500” <CR> 以國際號格式定義服務中心地址(SCA)
AT+CSCA=“+13800250500” <CR> 以國內號格式定義服務中心地址(SCA)
注意: Þ 為了避免漫遊時出現問題,推薦國際號碼格式儲存所有地址(以“+”和國家程式碼開頭 )。 Þ 向你本地的網路提供商詢問正確的短訊息服務中心號碼 Þ SC地址是SMS的一部分!當任何一個SMS被儲存到SIM卡上時,SC地址也同時該SMS中。 3.2 選擇訊息服務 (+CSMS)
這個指令用於選擇訊息服務。 句法: 輸入 執行 註釋
AT+CSMS? <CR> 返回當前的服務型別及ME支援的資訊
AT+CSMS=? <CR> 返回所有支援的服務型別
AT+CSMS=<SERVICE> <CR> 選擇訊息服務
響應
+ CSMS: <SERVICE>,<MT>,<MO>,<BM> OK
引數: <SERVICE> 訊息服務
<MT> 接收短訊息
<MO> 傳送短訊息
<BM> 接收小區廣播訊息
示例: 讀取指令 輸入 執行 註釋
AT+CSMS? <CR> 返回當前的服務型別及ME支援的資訊
響應
+ CSMS: 0,1,1,1 OK
指令返回當前的訊息服務和移動裝置支援的服務選項
設定指令 輸入 執行 註釋
AT+CSMS=1 <CR> 設定支援的訊息型別
響應
+ CSMS: 0,1,1,1 OK
返回移動裝置支援的服務選項
引數: 引數 值 描述
<SERVICE> 0 SMS AT 指令的句法相容 GSM Phase 2
1 SMS AT 指令的句法相容 GSM Phase 2+
2...127 保留
128 廠商自定義
<MT>,<MO>,<BM> 0 不支援
1 支援
3.3 選擇訊息格式 (+CMGF)
這個指令用於選擇短訊息格式。它的引數指示傳送、列取、讀取和寫入的訊息所使用的格式。 句法: 輸入 執行 註釋
AT+CMGF? <CR> 返回當前的SMS格式
AT+CMGF =? <CR> 返回所有支援的SMS格式
AT+CMGF=<MODE> <CR> 選擇SMS格式
響應
OK
支援的值: <MODE> 含義
0 PDU模式(預設的)
1 Text模式
示例: 讀取指令 輸入
執行
註釋
AT+CMGF?
<CR>
返回當前的SMS格式
響應
+ CMGF: 0 OK
返回當前的SMS格式
設定指令 輸入
執行
註釋
AT+CMGF=1
<CR>
設定SMS型別為Text
4、SMS文字模式
略 5、SMS PDU模式
一個完整的SMS訊息所包含的所有報頭資訊被以二進位制字串格式傳送。這個二進位制串由十六進 制格式的IA5 字元組合而成。 使用AT指令”AT+CMGF=0”切換到協議資料模式,之後所有的SMS輸入與顯示將以PDU格式執行。 5.1 傳送方SMS-Submit (Mobile Originated)
SMS-SUBMIT的意思就是GSM-Molbile傳送一條SMS到服務中心。 5.1.1 向SIM卡儲存區寫入一條SMS (+CMGW)
執行指令”AT+CMGW”用於儲存一條訊息在SIM卡的儲存區中。命令返回訊息被儲存的索引號。 句法: 輸入
執行
註釋
AT+CMGW=<LENGTH>[,<STAT>]
<CR>
> <PDU> *)
<CTRL-Z>/<ESC> **)
響應
+CMGW: <INDEX> OK
如果命令正確執行,返回訊息儲存位置的索引號
引數: <LENGTH>
給定的TP層資料單元的八位位組程式碼數目(不包含服務中心地址的八位位組數目)
<STAT>
除儲存未傳送的狀態之外的狀態值 在PDU模式下該值為整型(預設值為0) 在文字模式下該值為字元型(預設值為”REC UNREAD”)
<PDU>
PDU資料
<INDEX>
儲存位置
支援的值: <STAT>
含義
0 “REC UNREAD”
已接收未讀的訊息(例如新訊息)
1 “REC READ”
已接收已讀的訊息
2 “STO UNSENT”
已儲存未傳送的訊息
3 “STO SENT”
已儲存已傳送的訊息
4 “ALL”
所有的訊息(僅適用於 +CMGL命令)
注: *) 符號”>”是的移動終端設定返回而產生的 **) <CTRL>+<Z>執行命令;<ESC>不儲存/傳送、直接退出執行 5.1.2 傳送SIM卡儲存區中的一條SMS (+CMSS)
AT指令”AT+CMSS=<INDEX>[,<DA>[,<TODA>]]”將SIM卡訊息儲存區中<INDEX>索引位置的訊息發 送到網路中(SMS-SUBMIT)。如果指定新的接收地址<DA>,它將代替原訊息中儲存的接收地址。 如果訊息傳送成功,訊息參考值<MR>將返回到終端裝置(TE)。通常(當+CSMS<SERVICE>值為1 ,並且網路支援時),同時返回服務中心時間戳<SCTS>。 句法: 輸入
執行
註釋
AT+CMSS=<INDEX>
<CR>
響應
+CMSS: <MR>[,<SCTS>] OK
引數: <INDEX>
SIM卡記憶體位置索引
<MR>
訊息參考
<SCTS>
服務中心時間戳
示例: 輸入
執行
註釋
AT+CMSS=1
<CR>
SIM卡中儲存位置1的訊息將被髮送到服務中心
響應
+CMSS: 255 OK
SMS被髮送到服務中心,訊息參考為255
5.1.3 直接從終端設定傳送SMS (+CMGS)
這個指令用於從一個終端向網路中傳送訊息(SMS-SUBMIT),而不會在SIM卡中儲存所傳送的SMS 訊息。 如果訊息傳送成功,訊息參考值<MR>將返回到終端裝置(TE)。通常(當+CSMS<SERVICE>值為1 ,並且網路支援時),同時返回服務中心時間戳<SCTS>。 句法: 輸入
執行
註釋
AT+CMGS=<LENGTH>
<CR>
轉換SMS輸入模式,SMS將會被以“未傳送”狀態儲存。命令後所跟的PDU字串的長度必須在這個 命令中指定。
> <PDU> *)
<CTRL-Z>/<ESC> **)
直接從終端中傳送一條SMS,而不將其儲存到SIM卡。
響應
+CMGS: <MR>[,<SCTS>] OK
如果傳送成功將返回訊息參考
引數: <LENGTH> 給定的TP層資料單元的八位位組程式碼數目(不包含服務中心地址的八位位組數目)
<PDU> PDU資料
<MR> 訊息參考
<SCTS> 服務中心時間戳
注: *) 符號”>”是的移動終端裝置返回而產生的 **) <CTRL>+<Z>執行命令;<ESC>不儲存/傳送、直接退出執行 5.2 接收方 SMS-DELIVER (Mobile Terminated)
SMS-DELIVER意味著終端設定從服務中心接收到一條SMS訊息。 5.2.1 列取訊息 (+CMGL)
句法: 輸入 執行 註釋
AT+CMGL=<INDEX> <CR> 列取記憶體中指定型別的SMS
響應
+CMGL: <index><stat>[,<alpha>],<length> <pdu> [+CMGL: <index><stat>[,<alpha>],<length> <pdu> [...] ]
AT+CMGL=? <CR> 檢視裝置支援的<stat>型別
引數: 引數 描述
<STAT> 在PDU模式下該值為整型(預設值為0) 在文字模式下該值為字元型(預設值為”REC UNREAD”) 指示記憶體中訊息的狀態 定義的值: 0 “REC UNREAD” 已接收未讀的訊息(例如新訊息)
1 “REC READ” 已接收已讀的訊息
2 “STO UNSENT” 已儲存未傳送的訊息
3 “STO SENT” 已儲存已傳送的訊息
4 “ALL” 所有型別的訊息
5.2.2 讀取訊息 (+CMGR)
句法: 輸入 執行 註釋
AT+CMGR=<INDEX> <CR> 讀取記憶體中指定索引位置的SMS
響應
+CMGR: <STAT>[,<ALPHA>],<LENGTH> <PDU> OK
引數: 引數 描述
<STAT> 在PDU模式下該值為整型(預設值為0) 在文字模式下該值為字元型(預設值為”REC UNREAD”) 指示記憶體中訊息的狀態 定義的值 0 “REC UNREAD”
已接收未讀的訊息(例如新訊息)
1 “REC READ”
已接收已讀的訊息
2 “STO UNSENT”
已儲存未傳送的訊息
3 “STO SENT”
已儲存已傳送的訊息
<ALPHA>
以字元型的數字文字表示的,在SIM電話薄中找到的相應<OA>條目
<LENGTH>
給定的TP層資料單元的八位位組程式碼數目(不包含服務中心地址的八位位組)
<PDU>
PDU資料
注意: Þ 切不可直接提交一個DELIVER-SMS!因為它的PDU資料中頭資訊是與用於提交的PDU不一 樣的! Þ在記憶體(SIM)中至少有最後一個空閒空間,以保證能接收到新的SMS! 5.2.3 刪除訊息 (+CMGD)
句法: 輸入
執行
註釋
AT+CMGD=<INDEX>
<CR>
刪除在SIM卡中索引<INDEX>位置的SMS
響應
OK
6、SMS PDU 基本組成元素
下列元素是用於SMS-SUBMIT和SMS-DELIVER中的部分。 元素 名稱 長度 描述
SCA Service Center Adress 1-12 服務中心的電話號碼
PDU-Type Protocol Data Unit Type 1 協議資料單元型別
MR Message Reference 1 所有成功的SMS-SUBMIT參考數目 (0..255)
OA Originator Adress 2-12 傳送方SME的地址
DA Destination Adress 2-12 接收方SME的地址
PID Protocol Identifier 1 引數顯示SMSC以何種方式處理SM (比 如FAX,、Voice等)
DCS Data Coding Scheme 1 引數表示使用者資料(UD)採用什麼編碼 方案
SCTS Service Center Time Stamp 7 引數表示SMSC接收到訊息時的時間戳
VP Validity Period 0,1,7 引數表示訊息在SMSC中不再有效的時 長
UDL User Data Length 1 使用者資料段長度
UD User Data 0-140 SM資料
6.1 傳送方PDU格式SMS-SUBMIT-PDU (Mobile Originated)
SCA PDUType MR DA PID DCS VP UDL UD
1-12 1 1 2-12 1 1 0,1,7 1 0-140
示例: 向13851724908傳送一條SMS,訊息內容為:“Test” 0031000D91683158714209F80000A704D4F29C0E 向13851724908傳送一條SMS,訊息內容為:“測試” 0031000B813158714209F80008A7046D4B8BD5 SCA PDUType MR DA PID DCS VP UDL UD
1-12 1 1 2-12 1 1 0,1,7 1 0-140
00 31 00 0D91683158714209F8 00 00 A7 04 D4F29C0E
00 31 00 0B813158714209F8 00 18 A7 04 6D4B8BD5
6.2 接受方PDU格式 SMS-DELIVER-PDU (Mobile Terminated)
SCA PDUType OA PID DCS SCTS UDL UD
1-12 1 2-12 1 1 7 1 0-140
示例: 從13851724908接收到一條SMS,訊息內容為:“Test” 0891683108200505F0240D91683158714209F800004001528035350004D4F29C0E 從13851724908接收到一條SMS,訊息內容為:“測試” 0891683108200505F0240D91683158714209F8000840015280452400046D4B8BD5 SCA
PDUType
OA
PID
DCS
SCTS
UDL
UD
1-12
1
2-12
1
1
7
1
0-140
0891683108200505F0
24
0D91683158714209F8
00
00
40015280353500
04
D4F29C0E
0891683108200505F0
24
0D91683158714209F8
00
08
40015280452400
04
6D4B8BD5
6.3 SCA 短訊息服務中心地址格式
服務中心地址包含三個部分: SCA組成:1-12個八位位組 例:0891683108200505F0 1 Octet
0-1 Octet
0-10 Octets
Len
Type
Addr
SCA長度
SCA型別
SCA地址
08
91
683108200505F0
Len:短訊息中心地址長度。指(91)+(68 31 08 20 05 05 F0)的八位位組數目。如果Len被 設定為00&h,並不提供後面的部分,那麼終端裝置將讀取SIM中設定的SCA填充到SMS-PUD中,通 過“AT+CSCA=xxxxx”指令可以設定SIM卡中儲存的SCA值。 Type:短訊息中心地址的型別,是國際的號碼還是國內的號碼(81&h表示國內,91&h表示國際的 )。91&h是TON/NPI遵守International/E.164標準,指在號碼前需加‘+’號;此外還有其它數 值,但91&h最常用。 例:91 &h = 1001 0001 &b Bit No.
7
6
5
4
3
2
1
0
1
資料型別
號碼鑑別
第7位永遠置為1 數值型別(Type of Number): 000—未知,001—國際(以 + 開始的地址),010—國內,111—留作擴充套件; 號碼鑑別(Numbering plan identification): 0000—未知,0001—ISDN/電話號碼(E.164/E.163),1111—留作擴充套件; Add:依照ISDN編號方式的短訊息中心地址。 示例: 服務中心號碼
PDU格式編碼
+8613800250500
08 91 86 31 08 20 05 05 F0
13800512500
07 81 31 08 50 21 05 F0
123456
04 81 21 43 65
注: 指令AT+CMGW和AT+CMGS的引數<length>是從PDUType部分開始計算PDU的長度,不包括SCA的長度 。所以: 輸入:
AT+CMGS=19<cr> 輸出:
AT+CMGS=19<cr><cr><lf>> 輸入:
0891863108200505F031000D91683158714209F80000A704D4F29C0E<ctrl+z> 輸出:
0891863108200505F031000D91683158714209F80000A704D4F29C0E<ctrl+z><cr><lf>+CMGS: 111<cr><lf><cr><lf>OK<cr><lf>
SCA = 0891863108200505F0 輸入:
AT+CMGS=19<cr> 輸出:
AT+CMGS=19<cr><cr><lf>> 輸入:
0031000D91683158714209F80008A7046D4B8BD5<ctrl+z> 輸出:
0031000D91683158714209F80008A7046D4B8BD5<ctrl+z><cr><lf>+CMGS: 112<cr><lf><cr><lf>OK<cr><lf>
SCA = 00 <cr> = 0D&h <lf> = 0A&h <ctrl+z> = 1A&h 6.4 PDU Type(第一個八位位組)
PDUType是SMS-SUBMIT、SMS-DELIVER的第一個八位位組。它分別由下面幾個部分組成: PDUType組成:1個八位位組 傳送方:SMS-SUBMIT 例:31&h = 0011 0001&b Bit No.
7
6
5
4
3
2
1
0
RP
UDHI
SRR
VPF
RD
MTI
0
0
1
1
0
0
0
1
接收方:SMS-DELIVER 例:04&h = 0000 0100&b Bit No.
7
6
5
4
3
2
1
0
RP
UDHI
SRI
MMS
MTI
0
0
0
0
0
1
0
0
RP: 應答路徑(Reply Paht), 0 – 未設定; 1 – 設定 UDHI: 使用者資料頭標識(User Data Header Indicator), 0 – 使用者資料(UD)部分不包含頭資訊; 1 – 使用者資料(UD)開始部分包含使用者頭資訊 SRR: 請求狀態報告(Status Report Request), 0 – 不需要報告; 1 – 需要報告 SRI: 狀態報告指示(Status Report Indication),此值僅被短訊息服務中心 (SMSC)設定 0 – 狀態報告將不會返回給短訊息實體(SME) 1 – 狀態報告將返回給短訊息實體(SME) VPF: 有效期格式(Validity Period Format), 00 – VP 段沒有提供(長度為 0 ), 01 – 保留, 10 – VP 段以整型形式提供(相對的), 11 – VP 段以8位組的一半(semi-octet)形式提供(絕對的) RD: 拒絕複本(Reject Duplicate), 0 – 通知 短訊息服務中心(SMSC)接受一個SMS-SUBMIT,即使該訊息 是先前已提交過的,並還存在於SMSC中未傳送出去。MS重複的條件是:訊息參考(MR)、接收方地 址(DA)及傳送方地址(OA)相同 1 – 通知 SMSC 拒絕一個重複的 SMS MMS: 有更多的資訊需要傳送(More Messages to Send),此值僅被 SMSC 設定 0 – 在 SMSC 中有更多的資訊等待 MS 1 – 在 SMSC 中沒有更多的資訊等待 MS MTI: 資訊型別指示(Message Type Indicator) 00 – SMS-DELIVER(SMSCèMS) 00 – SMS-DELIVER REPORT(MS è SMSC) 當手機接收到 SMS-DELIVER 時自動產生 01 – SMS-SUBMIT(MS è SMSC) 01 – SMS- SUBMIT REPORT(SMSC è MS) 10 – SMS-STATUS REPORT (SMSC è MS) 10 – SMS-COMMAND(MS è SMSC) 11 – 保留 注:(粗體代表手機支援的型別,並不是所有的 PDU 型別均被服務中心支援) 注意: PDUType是PDU的第一個八位位組,而並不是服務中心號碼後的第一個位元組! 6.5 MR 資訊參考 (Message Reference)
設為 00 即可 6.6 DA/OA 接收方地址與傳送方地址
OA與DA格式是一樣的,如下所示: DA組成:2-12個八位位組 例:0D91683158714209F8 1 Octet
0-1 Octet
0-10 Octets
Len
Type
Addr
長度
型別
地址
0D
91
683158714209F8
Len:地址長度。指8613851724908 的長度。這與SCA中的定義不一樣! Type:短訊息中心地址的型別,是國際的號碼還是國內的號碼(81&h表示國內,91&h表示國際的 )。 Add:依照ISDN編號方式的短訊息中心地址。 示例: 電話號碼
PDU格式編碼
+8613851724908
0D 91 86 31 58 71 42 09 F8
13851724908
0B 81 31 58 71 42 09 F8
106051268812345 *)
0F A1 01 06 15 62 88 21 43 F5
123456
06 81 21 43 65
*) 小靈通號碼 6.7 PID 協議標識 (Protocol-Identifier)
對於標準情況下的下 MS-to-SC 短訊息傳送,只需設定 PID 為 00 6.8 DCS 資料編碼方案 (DataCoding-Scheme)
Bit No.
7
6
5
4
3
2
1
0
描述
示例:
0
0
0
0
0
0
0
0
= 00&h 7 bit 資料編碼 預設字符集
1
1
1
1
0
1
1
0
= F6&h 8 bit 資料編碼 Class 1
0
0
0
0
1
0
0
0
= 08&h USC2(16bit)雙位元組字符集
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 – 預設的字母表,每個字元佔用 7 位元位,此時最大可以傳送 160 字元 01 – 8bit,此時最大隻能傳送 140 個字元 10 – USC2(16bit), 傳送雙位元組字符集 11 – 預留; Bit No.1與Bit No.0: 00 – Class 0,短訊息直接顯示在螢幕上 01 – Class 1, 10 – Class 2(SIM卡特定資訊), 11 – Class 3。 示例: DSC
字符集
資訊 Class
00
default (7-bit)
No Class
F0
default (7-bit)
Class 0 (immediate display)
F1
default (7-bit)
Class 1 (Mobile Equipment- specific)
F2
default (7-bit)
Class 2 (SIM specific message)
F3
default (7-bit)
Class 3 (Class3 Terminate Equipment- specific)
F4
8-bit
Class 0 (immediate display)
F5
8-bit
Class 1 (Mobile Equipment- specific)
F6
8-bit
Class 2 (SIM specific message)
F7
8-bit
Class 3 (Class3 Terminate Equipment- specific)
08
16-bit
No Class
18
16-bit
Class 0 (immediate display)
6.9 VP 資訊有效期(Validity Period)
第一種情況(相對的): VPF = 10 VP = AA H (四天) 第二種情況(絕對的): VPF = 11 年
月
日
時
分
秒
時區
30
80
02
90
54
33
20
表示 03-08-20 09:45:33 VP 段以整型或半個8位組(semi-octet)形式提供。 第一種情況,VP為一個8位組,給定有效期的長度, 從 SMS-SUBMIT 被 SMSC 接受開始計算。 第二種情況,VP為七個8位組,給定有效期終止的絕對時間。 在第一種情況下,有效期表示格式如下所示: VP
相應的有效期
00 – 8F
(VF+1)*5 分鐘 從 5 分鐘間隔到 12 個小時
90 – A7
12 小時 + (VF – 143)*30 分鐘
A8 – C4
(VP – 166) * 1 天
C5 – FF
(VP – 192) * 1 周
第二種情況下的時間形式與 SCTS(Service Center TimeStamp)形式一致。 6.10 SCTS 服務中心時間戳(Service Center TimeStamp)
佔用七個8位組,格式如 VP 的第二種情況所示 6.11 UDL 使用者資料長度 (User-Data-Length (Amount of Characters))
UDL 以整型形式提供,表示後面使用者資料段的資料長度。 資料格式有3種: 7bit,8bit,16bit。 其中7bit採用GSM字符集,8bit採用ASCII字符集,16bit採用Unicode字符集。 1 octet
0 .. 140 octets
UDL
UD
05
E8 32 9B FD 06
如:7bit資料 "Test" UDL = 04, UD = D4 F2 9C 0E 又如:16bit資料 "Test" UDL = 08, UD = 00 54 00 65 00 73 00 74 使用者資料(UD)的編碼方式請參考第9章SMS編碼方案與程式設計實現 7、常用 AT 指令
AT 指令
功 能
AT+CMGC
Send an SMS command(發出一條短訊息命令)
AT+CMGD
Delete SMS message(刪除SIM卡記憶體的短訊息)
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” -待發
3/“STO SENT” -已發
4/“ALL” -全部的
)
AT+CMGR
Read SMS message(讀短訊息)
AT+CMGS
Send SMS message(傳送短訊息)
AT+CMGW
Write SMS message to memory(向SIM記憶體中寫入待發的短訊息)
AT+CMSS
Send SMS message from storage(從SIN|M記憶體中傳送短訊息)
AT+CNMI
New SMS message indications(顯示新收到的短訊息)
AT+CPMS
Preferred SMS message storage(選擇短訊息記憶體)
AT+CSCA
SMS service center address(短訊息中心地址)
AT+CSCB
Select cell broadcast messages(選擇蜂窩廣播訊息)
AT+CSMP
Set SMS text mode parameters(設定短訊息文字模式引數)
AT+CSMS
Select Message Service(選擇短訊息服務)
8、PDU操作例項
8.1 準備工作
一臺支援AT操作的手機或手機模組,建議使用SIEMENS的,我使用的是西門子2118。 一根串列埠資料線。 串列埠除錯軟體: 串列埠除錯助手V2.2
RoaringWindStudio 嘯峰工作室
http://www.gjwtech.com/
用於通過串列埠傳送和接收資料。
Portmon
Mark Russinovich
http://www.sysinternals.com/
用於監聽系統中正在使用中的串列埠或並口當前傳送的資料。
西門子手機工作室
通過上面的監聽程式分析它的動作,你可以學到很多。
8.2 連線手機
將資料線插在主機的COM1上,然後執行串列埠除錯助手V2.2,設定串列埠為COM1,波特率為19200, 校驗位為NONE,資料位為8,停止位為1。然後輸入AT再加一個回車,之後點發送按鈕,如果手機 應答 AT<cr><cr><cl>OK<cr><cl>,則說明電腦已與手機正常連線!如下圖所示: 8.3 傳送PDU SMS
如前面所述,向號碼為 +8613851724908手機發送一條內容為“Test”的SMS,PDU串是 0031000D91683158714209F80000A704D4F29C0E,它的長度是20個八位位組,而最左方的 00 位組 是PDU串中的短訊息服務中心欄位,AT+CMGS=<length>指令的<length>不將其計算在內,所以首 先應該傳送AT+CMGS=19<cr>: 如上圖所示,手機返回了 AT+CMGS=19 >
這是要儘快輸入PDU串:0031000D91683158714209F80000A704D4F29C0E 正確輸入了PDU串後,還需要輸入一個控制字元<ctrl+z> 1A &h通過手機立即將它傳送出去,或 輸入<esc> 1B &h通過終端裝置放棄。 手機返回 +CMGS: 111 OK
說明短訊息傳送成功!返回的訊息參考是111,表示這是傳送成功的第111條訊息(服務中心不保 證該值絕
SMS提供了在GSM移動站臺(MS)與一個短訊息實體(SME)之間通過服務中心(SC)傳送短訊息的方法 。SC提供了在MS與SME之間訊息傳送的相互聯絡和轉播的功能。 SMS採用儲存轉發模式,短訊息被髮送出去之後,不是直接地傳送給接收方,而是先儲存在SMS( 短訊息服務中心),然後再由SMC將其轉發給接收方。如果接收方當時關機或不在服務區內,SMC 會自動儲存該短訊息,排隊並嘗試再次傳送給接收方。 點到點短訊息服務包含兩個基本服務:
Þ SM MT(點到點短訊息移動接收)
Þ SM MO(點到點短訊息移動傳送) 通過 SM MT 或 SM MO 方法傳送的文字訊息包含 140 個八位位組(最大 160 個拉丁字母字元、 70個雙位元組字元)。 本文僅僅給出了簡單地一些AT指令及SMS PDU模式的描述。更多的詳細資料,請參看下列標準: GSM 03.04 GSM 03.38 GSM 03.41 GSM 07.05 GSM 07.07 2、縮寫詞
縮寫 全稱 說明
MS: Mobile-Station 移動站臺
負責系統交換管理,控制來自或發往其他電話或資料系統的 通訊
SME: Short-Message-Entity 短訊息實體
負責接收和傳送短訊息。可以位於固話系統、移動基站或 其他服務中心內
SMSC: Short Message Service Center 短訊息服務中心
負責在移動基站和SME之間中繼、儲存或轉發短訊息
PDUs: Protocol Data Units 協議資料單元
PDU Type: Protocol Data Unit Type 協議資料單元型別
MR: Message Reference 訊息參考
OA: Originator Adress 傳送方地址
DA: Destination Adress 接收方地址
PID: Protocol Identifier 協議標識
DCS: Data Coding Scheme 資料編碼方案
SCTS: Service Center Time Stamp 服務中心的時間戳
VP: Validity Period 訊息有效期
UDL: User Data Length 使用者資料長度
UD: User Data 使用者資料
RP: Reply Path 應答路徑
UDHI: User Data Header Indicator 使用者資料頭標識
SRI: Status Report Indication 狀態報告指示
SRR: Status Report Request 請示狀態報告
VPF: Validity Period Format 有效期格式
MMS: More Messages to Send 有更多的資訊需要傳送
RD: Reject Duplicate 拒絕複本
MTI: Message Type Indicator 訊息型別指示
ME: Mobile Equipment 移動裝置
TE: Terminal Equipment 終端裝置
SIM: Subscriber Identity Modul
SC: Service-Center 服務中心
SCA: Service Center Address 服務中心地址
SM MT: Short Message Mobile Terminated Point-to-Point 點到點短訊息移動接收
SM MO: Short Message Mobile Originaed Point-to-Point 點到點短訊息移動傳送
3、設定指令
3.1 服務中心號碼 (+CSCA)
服務中心(SC)負責轉播和儲存轉發SME和MS之間的短訊息。如果MS支援SMS-MO(短訊息服務移動 傳送),為了使用SMS,必須在MS中設定SMSC(短訊息服務中心,SCA)。 使用指令 “AT+CSCA?” 可以檢視儲存在SIM卡中的當前服務中心地址。 使用AT指令 “AT+CSCA=<SCA>[,<TOSCA>]” 加入短訊息服務號碼。 句法: 輸入 執行 註釋
AT+CSCA? <CR> 查詢當前服務中心地址(SCA)設定(從SIM卡中讀取)
響應
+CSCA: “<SCA>” OK
AT+CSCA=“<SCA>” <CR> 定義服務中心地址(SCA) (儲存到SIM卡)
引數: <SCA> 服務中心地址(字元型)
<TOSCA> 服務中心地址的型別設定(編碼方式)
示例: AT+CSCA=“+8613800250500” <CR> 以國際號格式定義服務中心地址(SCA)
AT+CSCA=“+13800250500” <CR> 以國內號格式定義服務中心地址(SCA)
注意: Þ 為了避免漫遊時出現問題,推薦國際號碼格式儲存所有地址(以“+”和國家程式碼開頭 )。 Þ 向你本地的網路提供商詢問正確的短訊息服務中心號碼 Þ SC地址是SMS的一部分!當任何一個SMS被儲存到SIM卡上時,SC地址也同時該SMS中。 3.2 選擇訊息服務 (+CSMS)
這個指令用於選擇訊息服務。 句法: 輸入 執行 註釋
AT+CSMS? <CR> 返回當前的服務型別及ME支援的資訊
AT+CSMS=? <CR> 返回所有支援的服務型別
AT+CSMS=<SERVICE> <CR> 選擇訊息服務
響應
+ CSMS: <SERVICE>,<MT>,<MO>,<BM> OK
引數: <SERVICE> 訊息服務
<MT> 接收短訊息
<MO> 傳送短訊息
<BM> 接收小區廣播訊息
示例: 讀取指令 輸入 執行 註釋
AT+CSMS? <CR> 返回當前的服務型別及ME支援的資訊
響應
+ CSMS: 0,1,1,1 OK
指令返回當前的訊息服務和移動裝置支援的服務選項
設定指令 輸入 執行 註釋
AT+CSMS=1 <CR> 設定支援的訊息型別
響應
+ CSMS: 0,1,1,1 OK
返回移動裝置支援的服務選項
引數: 引數 值 描述
<SERVICE> 0 SMS AT 指令的句法相容 GSM Phase 2
1 SMS AT 指令的句法相容 GSM Phase 2+
2...127 保留
128 廠商自定義
<MT>,<MO>,<BM> 0 不支援
1 支援
3.3 選擇訊息格式 (+CMGF)
這個指令用於選擇短訊息格式。它的引數指示傳送、列取、讀取和寫入的訊息所使用的格式。 句法: 輸入 執行 註釋
AT+CMGF? <CR> 返回當前的SMS格式
AT+CMGF =? <CR> 返回所有支援的SMS格式
AT+CMGF=<MODE> <CR> 選擇SMS格式
響應
OK
支援的值: <MODE> 含義
0 PDU模式(預設的)
1 Text模式
示例: 讀取指令 輸入
執行
註釋
AT+CMGF?
<CR>
返回當前的SMS格式
響應
+ CMGF: 0 OK
返回當前的SMS格式
設定指令 輸入
執行
註釋
AT+CMGF=1
<CR>
設定SMS型別為Text
4、SMS文字模式
略 5、SMS PDU模式
一個完整的SMS訊息所包含的所有報頭資訊被以二進位制字串格式傳送。這個二進位制串由十六進 制格式的IA5 字元組合而成。 使用AT指令”AT+CMGF=0”切換到協議資料模式,之後所有的SMS輸入與顯示將以PDU格式執行。 5.1 傳送方SMS-Submit (Mobile Originated)
SMS-SUBMIT的意思就是GSM-Molbile傳送一條SMS到服務中心。 5.1.1 向SIM卡儲存區寫入一條SMS (+CMGW)
執行指令”AT+CMGW”用於儲存一條訊息在SIM卡的儲存區中。命令返回訊息被儲存的索引號。 句法: 輸入
執行
註釋
AT+CMGW=<LENGTH>[,<STAT>]
<CR>
> <PDU> *)
<CTRL-Z>/<ESC> **)
響應
+CMGW: <INDEX> OK
如果命令正確執行,返回訊息儲存位置的索引號
引數: <LENGTH>
給定的TP層資料單元的八位位組程式碼數目(不包含服務中心地址的八位位組數目)
<STAT>
除儲存未傳送的狀態之外的狀態值 在PDU模式下該值為整型(預設值為0) 在文字模式下該值為字元型(預設值為”REC UNREAD”)
<PDU>
PDU資料
<INDEX>
儲存位置
支援的值: <STAT>
含義
0 “REC UNREAD”
已接收未讀的訊息(例如新訊息)
1 “REC READ”
已接收已讀的訊息
2 “STO UNSENT”
已儲存未傳送的訊息
3 “STO SENT”
已儲存已傳送的訊息
4 “ALL”
所有的訊息(僅適用於 +CMGL命令)
注: *) 符號”>”是的移動終端設定返回而產生的 **) <CTRL>+<Z>執行命令;<ESC>不儲存/傳送、直接退出執行 5.1.2 傳送SIM卡儲存區中的一條SMS (+CMSS)
AT指令”AT+CMSS=<INDEX>[,<DA>[,<TODA>]]”將SIM卡訊息儲存區中<INDEX>索引位置的訊息發 送到網路中(SMS-SUBMIT)。如果指定新的接收地址<DA>,它將代替原訊息中儲存的接收地址。 如果訊息傳送成功,訊息參考值<MR>將返回到終端裝置(TE)。通常(當+CSMS<SERVICE>值為1 ,並且網路支援時),同時返回服務中心時間戳<SCTS>。 句法: 輸入
執行
註釋
AT+CMSS=<INDEX>
<CR>
響應
+CMSS: <MR>[,<SCTS>] OK
引數: <INDEX>
SIM卡記憶體位置索引
<MR>
訊息參考
<SCTS>
服務中心時間戳
示例: 輸入
執行
註釋
AT+CMSS=1
<CR>
SIM卡中儲存位置1的訊息將被髮送到服務中心
響應
+CMSS: 255 OK
SMS被髮送到服務中心,訊息參考為255
5.1.3 直接從終端設定傳送SMS (+CMGS)
這個指令用於從一個終端向網路中傳送訊息(SMS-SUBMIT),而不會在SIM卡中儲存所傳送的SMS 訊息。 如果訊息傳送成功,訊息參考值<MR>將返回到終端裝置(TE)。通常(當+CSMS<SERVICE>值為1 ,並且網路支援時),同時返回服務中心時間戳<SCTS>。 句法: 輸入
執行
註釋
AT+CMGS=<LENGTH>
<CR>
轉換SMS輸入模式,SMS將會被以“未傳送”狀態儲存。命令後所跟的PDU字串的長度必須在這個 命令中指定。
> <PDU> *)
<CTRL-Z>/<ESC> **)
直接從終端中傳送一條SMS,而不將其儲存到SIM卡。
響應
+CMGS: <MR>[,<SCTS>] OK
如果傳送成功將返回訊息參考
引數: <LENGTH> 給定的TP層資料單元的八位位組程式碼數目(不包含服務中心地址的八位位組數目)
<PDU> PDU資料
<MR> 訊息參考
<SCTS> 服務中心時間戳
注: *) 符號”>”是的移動終端裝置返回而產生的 **) <CTRL>+<Z>執行命令;<ESC>不儲存/傳送、直接退出執行 5.2 接收方 SMS-DELIVER (Mobile Terminated)
SMS-DELIVER意味著終端設定從服務中心接收到一條SMS訊息。 5.2.1 列取訊息 (+CMGL)
句法: 輸入 執行 註釋
AT+CMGL=<INDEX> <CR> 列取記憶體中指定型別的SMS
響應
+CMGL: <index><stat>[,<alpha>],<length> <pdu> [+CMGL: <index><stat>[,<alpha>],<length> <pdu> [...] ]
AT+CMGL=? <CR> 檢視裝置支援的<stat>型別
引數: 引數 描述
<STAT> 在PDU模式下該值為整型(預設值為0) 在文字模式下該值為字元型(預設值為”REC UNREAD”) 指示記憶體中訊息的狀態 定義的值: 0 “REC UNREAD” 已接收未讀的訊息(例如新訊息)
1 “REC READ” 已接收已讀的訊息
2 “STO UNSENT” 已儲存未傳送的訊息
3 “STO SENT” 已儲存已傳送的訊息
4 “ALL” 所有型別的訊息
5.2.2 讀取訊息 (+CMGR)
句法: 輸入 執行 註釋
AT+CMGR=<INDEX> <CR> 讀取記憶體中指定索引位置的SMS
響應
+CMGR: <STAT>[,<ALPHA>],<LENGTH> <PDU> OK
引數: 引數 描述
<STAT> 在PDU模式下該值為整型(預設值為0) 在文字模式下該值為字元型(預設值為”REC UNREAD”) 指示記憶體中訊息的狀態 定義的值 0 “REC UNREAD”
已接收未讀的訊息(例如新訊息)
1 “REC READ”
已接收已讀的訊息
2 “STO UNSENT”
已儲存未傳送的訊息
3 “STO SENT”
已儲存已傳送的訊息
<ALPHA>
以字元型的數字文字表示的,在SIM電話薄中找到的相應<OA>條目
<LENGTH>
給定的TP層資料單元的八位位組程式碼數目(不包含服務中心地址的八位位組)
<PDU>
PDU資料
注意: Þ 切不可直接提交一個DELIVER-SMS!因為它的PDU資料中頭資訊是與用於提交的PDU不一 樣的! Þ在記憶體(SIM)中至少有最後一個空閒空間,以保證能接收到新的SMS! 5.2.3 刪除訊息 (+CMGD)
句法: 輸入
執行
註釋
AT+CMGD=<INDEX>
<CR>
刪除在SIM卡中索引<INDEX>位置的SMS
響應
OK
6、SMS PDU 基本組成元素
下列元素是用於SMS-SUBMIT和SMS-DELIVER中的部分。 元素 名稱 長度 描述
SCA Service Center Adress 1-12 服務中心的電話號碼
PDU-Type Protocol Data Unit Type 1 協議資料單元型別
MR Message Reference 1 所有成功的SMS-SUBMIT參考數目 (0..255)
OA Originator Adress 2-12 傳送方SME的地址
DA Destination Adress 2-12 接收方SME的地址
PID Protocol Identifier 1 引數顯示SMSC以何種方式處理SM (比 如FAX,、Voice等)
DCS Data Coding Scheme 1 引數表示使用者資料(UD)採用什麼編碼 方案
SCTS Service Center Time Stamp 7 引數表示SMSC接收到訊息時的時間戳
VP Validity Period 0,1,7 引數表示訊息在SMSC中不再有效的時 長
UDL User Data Length 1 使用者資料段長度
UD User Data 0-140 SM資料
6.1 傳送方PDU格式SMS-SUBMIT-PDU (Mobile Originated)
SCA PDUType MR DA PID DCS VP UDL UD
1-12 1 1 2-12 1 1 0,1,7 1 0-140
示例: 向13851724908傳送一條SMS,訊息內容為:“Test” 0031000D91683158714209F80000A704D4F29C0E 向13851724908傳送一條SMS,訊息內容為:“測試” 0031000B813158714209F80008A7046D4B8BD5 SCA PDUType MR DA PID DCS VP UDL UD
1-12 1 1 2-12 1 1 0,1,7 1 0-140
00 31 00 0D91683158714209F8 00 00 A7 04 D4F29C0E
00 31 00 0B813158714209F8 00 18 A7 04 6D4B8BD5
6.2 接受方PDU格式 SMS-DELIVER-PDU (Mobile Terminated)
SCA PDUType OA PID DCS SCTS UDL UD
1-12 1 2-12 1 1 7 1 0-140
示例: 從13851724908接收到一條SMS,訊息內容為:“Test” 0891683108200505F0240D91683158714209F800004001528035350004D4F29C0E 從13851724908接收到一條SMS,訊息內容為:“測試” 0891683108200505F0240D91683158714209F8000840015280452400046D4B8BD5 SCA
PDUType
OA
PID
DCS
SCTS
UDL
UD
1-12
1
2-12
1
1
7
1
0-140
0891683108200505F0
24
0D91683158714209F8
00
00
40015280353500
04
D4F29C0E
0891683108200505F0
24
0D91683158714209F8
00
08
40015280452400
04
6D4B8BD5
6.3 SCA 短訊息服務中心地址格式
服務中心地址包含三個部分: SCA組成:1-12個八位位組 例:0891683108200505F0 1 Octet
0-1 Octet
0-10 Octets
Len
Type
Addr
SCA長度
SCA型別
SCA地址
08
91
683108200505F0
Len:短訊息中心地址長度。指(91)+(68 31 08 20 05 05 F0)的八位位組數目。如果Len被 設定為00&h,並不提供後面的部分,那麼終端裝置將讀取SIM中設定的SCA填充到SMS-PUD中,通 過“AT+CSCA=xxxxx”指令可以設定SIM卡中儲存的SCA值。 Type:短訊息中心地址的型別,是國際的號碼還是國內的號碼(81&h表示國內,91&h表示國際的 )。91&h是TON/NPI遵守International/E.164標準,指在號碼前需加‘+’號;此外還有其它數 值,但91&h最常用。 例:91 &h = 1001 0001 &b Bit No.
7
6
5
4
3
2
1
0
1
資料型別
號碼鑑別
第7位永遠置為1 數值型別(Type of Number): 000—未知,001—國際(以 + 開始的地址),010—國內,111—留作擴充套件; 號碼鑑別(Numbering plan identification): 0000—未知,0001—ISDN/電話號碼(E.164/E.163),1111—留作擴充套件; Add:依照ISDN編號方式的短訊息中心地址。 示例: 服務中心號碼
PDU格式編碼
+8613800250500
08 91 86 31 08 20 05 05 F0
13800512500
07 81 31 08 50 21 05 F0
123456
04 81 21 43 65
注: 指令AT+CMGW和AT+CMGS的引數<length>是從PDUType部分開始計算PDU的長度,不包括SCA的長度 。所以: 輸入:
AT+CMGS=19<cr> 輸出:
AT+CMGS=19<cr><cr><lf>> 輸入:
0891863108200505F031000D91683158714209F80000A704D4F29C0E<ctrl+z> 輸出:
0891863108200505F031000D91683158714209F80000A704D4F29C0E<ctrl+z><cr><lf>+CMGS: 111<cr><lf><cr><lf>OK<cr><lf>
SCA = 0891863108200505F0 輸入:
AT+CMGS=19<cr> 輸出:
AT+CMGS=19<cr><cr><lf>> 輸入:
0031000D91683158714209F80008A7046D4B8BD5<ctrl+z> 輸出:
0031000D91683158714209F80008A7046D4B8BD5<ctrl+z><cr><lf>+CMGS: 112<cr><lf><cr><lf>OK<cr><lf>
SCA = 00 <cr> = 0D&h <lf> = 0A&h <ctrl+z> = 1A&h 6.4 PDU Type(第一個八位位組)
PDUType是SMS-SUBMIT、SMS-DELIVER的第一個八位位組。它分別由下面幾個部分組成: PDUType組成:1個八位位組 傳送方:SMS-SUBMIT 例:31&h = 0011 0001&b Bit No.
7
6
5
4
3
2
1
0
RP
UDHI
SRR
VPF
RD
MTI
0
0
1
1
0
0
0
1
接收方:SMS-DELIVER 例:04&h = 0000 0100&b Bit No.
7
6
5
4
3
2
1
0
RP
UDHI
SRI
MMS
MTI
0
0
0
0
0
1
0
0
RP: 應答路徑(Reply Paht), 0 – 未設定; 1 – 設定 UDHI: 使用者資料頭標識(User Data Header Indicator), 0 – 使用者資料(UD)部分不包含頭資訊; 1 – 使用者資料(UD)開始部分包含使用者頭資訊 SRR: 請求狀態報告(Status Report Request), 0 – 不需要報告; 1 – 需要報告 SRI: 狀態報告指示(Status Report Indication),此值僅被短訊息服務中心 (SMSC)設定 0 – 狀態報告將不會返回給短訊息實體(SME) 1 – 狀態報告將返回給短訊息實體(SME) VPF: 有效期格式(Validity Period Format), 00 – VP 段沒有提供(長度為 0 ), 01 – 保留, 10 – VP 段以整型形式提供(相對的), 11 – VP 段以8位組的一半(semi-octet)形式提供(絕對的) RD: 拒絕複本(Reject Duplicate), 0 – 通知 短訊息服務中心(SMSC)接受一個SMS-SUBMIT,即使該訊息 是先前已提交過的,並還存在於SMSC中未傳送出去。MS重複的條件是:訊息參考(MR)、接收方地 址(DA)及傳送方地址(OA)相同 1 – 通知 SMSC 拒絕一個重複的 SMS MMS: 有更多的資訊需要傳送(More Messages to Send),此值僅被 SMSC 設定 0 – 在 SMSC 中有更多的資訊等待 MS 1 – 在 SMSC 中沒有更多的資訊等待 MS MTI: 資訊型別指示(Message Type Indicator) 00 – SMS-DELIVER(SMSCèMS) 00 – SMS-DELIVER REPORT(MS è SMSC) 當手機接收到 SMS-DELIVER 時自動產生 01 – SMS-SUBMIT(MS è SMSC) 01 – SMS- SUBMIT REPORT(SMSC è MS) 10 – SMS-STATUS REPORT (SMSC è MS) 10 – SMS-COMMAND(MS è SMSC) 11 – 保留 注:(粗體代表手機支援的型別,並不是所有的 PDU 型別均被服務中心支援) 注意: PDUType是PDU的第一個八位位組,而並不是服務中心號碼後的第一個位元組! 6.5 MR 資訊參考 (Message Reference)
設為 00 即可 6.6 DA/OA 接收方地址與傳送方地址
OA與DA格式是一樣的,如下所示: DA組成:2-12個八位位組 例:0D91683158714209F8 1 Octet
0-1 Octet
0-10 Octets
Len
Type
Addr
長度
型別
地址
0D
91
683158714209F8
Len:地址長度。指8613851724908 的長度。這與SCA中的定義不一樣! Type:短訊息中心地址的型別,是國際的號碼還是國內的號碼(81&h表示國內,91&h表示國際的 )。 Add:依照ISDN編號方式的短訊息中心地址。 示例: 電話號碼
PDU格式編碼
+8613851724908
0D 91 86 31 58 71 42 09 F8
13851724908
0B 81 31 58 71 42 09 F8
106051268812345 *)
0F A1 01 06 15 62 88 21 43 F5
123456
06 81 21 43 65
*) 小靈通號碼 6.7 PID 協議標識 (Protocol-Identifier)
對於標準情況下的下 MS-to-SC 短訊息傳送,只需設定 PID 為 00 6.8 DCS 資料編碼方案 (DataCoding-Scheme)
Bit No.
7
6
5
4
3
2
1
0
描述
示例:
0
0
0
0
0
0
0
0
= 00&h 7 bit 資料編碼 預設字符集
1
1
1
1
0
1
1
0
= F6&h 8 bit 資料編碼 Class 1
0
0
0
0
1
0
0
0
= 08&h USC2(16bit)雙位元組字符集
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 – 預設的字母表,每個字元佔用 7 位元位,此時最大可以傳送 160 字元 01 – 8bit,此時最大隻能傳送 140 個字元 10 – USC2(16bit), 傳送雙位元組字符集 11 – 預留; Bit No.1與Bit No.0: 00 – Class 0,短訊息直接顯示在螢幕上 01 – Class 1, 10 – Class 2(SIM卡特定資訊), 11 – Class 3。 示例: DSC
字符集
資訊 Class
00
default (7-bit)
No Class
F0
default (7-bit)
Class 0 (immediate display)
F1
default (7-bit)
Class 1 (Mobile Equipment- specific)
F2
default (7-bit)
Class 2 (SIM specific message)
F3
default (7-bit)
Class 3 (Class3 Terminate Equipment- specific)
F4
8-bit
Class 0 (immediate display)
F5
8-bit
Class 1 (Mobile Equipment- specific)
F6
8-bit
Class 2 (SIM specific message)
F7
8-bit
Class 3 (Class3 Terminate Equipment- specific)
08
16-bit
No Class
18
16-bit
Class 0 (immediate display)
6.9 VP 資訊有效期(Validity Period)
第一種情況(相對的): VPF = 10 VP = AA H (四天) 第二種情況(絕對的): VPF = 11 年
月
日
時
分
秒
時區
30
80
02
90
54
33
20
表示 03-08-20 09:45:33 VP 段以整型或半個8位組(semi-octet)形式提供。 第一種情況,VP為一個8位組,給定有效期的長度, 從 SMS-SUBMIT 被 SMSC 接受開始計算。 第二種情況,VP為七個8位組,給定有效期終止的絕對時間。 在第一種情況下,有效期表示格式如下所示: VP
相應的有效期
00 – 8F
(VF+1)*5 分鐘 從 5 分鐘間隔到 12 個小時
90 – A7
12 小時 + (VF – 143)*30 分鐘
A8 – C4
(VP – 166) * 1 天
C5 – FF
(VP – 192) * 1 周
第二種情況下的時間形式與 SCTS(Service Center TimeStamp)形式一致。 6.10 SCTS 服務中心時間戳(Service Center TimeStamp)
佔用七個8位組,格式如 VP 的第二種情況所示 6.11 UDL 使用者資料長度 (User-Data-Length (Amount of Characters))
UDL 以整型形式提供,表示後面使用者資料段的資料長度。 資料格式有3種: 7bit,8bit,16bit。 其中7bit採用GSM字符集,8bit採用ASCII字符集,16bit採用Unicode字符集。 1 octet
0 .. 140 octets
UDL
UD
05
E8 32 9B FD 06
如:7bit資料 "Test" UDL = 04, UD = D4 F2 9C 0E 又如:16bit資料 "Test" UDL = 08, UD = 00 54 00 65 00 73 00 74 使用者資料(UD)的編碼方式請參考第9章SMS編碼方案與程式設計實現 7、常用 AT 指令
AT 指令
功 能
AT+CMGC
Send an SMS command(發出一條短訊息命令)
AT+CMGD
Delete SMS message(刪除SIM卡記憶體的短訊息)
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” -待發
3/“STO SENT” -已發
4/“ALL” -全部的
)
AT+CMGR
Read SMS message(讀短訊息)
AT+CMGS
Send SMS message(傳送短訊息)
AT+CMGW
Write SMS message to memory(向SIM記憶體中寫入待發的短訊息)
AT+CMSS
Send SMS message from storage(從SIN|M記憶體中傳送短訊息)
AT+CNMI
New SMS message indications(顯示新收到的短訊息)
AT+CPMS
Preferred SMS message storage(選擇短訊息記憶體)
AT+CSCA
SMS service center address(短訊息中心地址)
AT+CSCB
Select cell broadcast messages(選擇蜂窩廣播訊息)
AT+CSMP
Set SMS text mode parameters(設定短訊息文字模式引數)
AT+CSMS
Select Message Service(選擇短訊息服務)
8、PDU操作例項
8.1 準備工作
一臺支援AT操作的手機或手機模組,建議使用SIEMENS的,我使用的是西門子2118。 一根串列埠資料線。 串列埠除錯軟體: 串列埠除錯助手V2.2
RoaringWindStudio 嘯峰工作室
Mark Russinovich
將資料線插在主機的COM1上,然後執行串列埠除錯助手V2.2,設定串列埠為COM1,波特率為19200, 校驗位為NONE,資料位為8,停止位為1。然後輸入AT再加一個回車,之後點發送按鈕,如果手機 應答 AT<cr><cr><cl>OK<cr><cl>,則說明電腦已與手機正常連線!如下圖所示: 8.3 傳送PDU SMS
如前面所述,向號碼為 +8613851724908手機發送一條內容為“Test”的SMS,PDU串是 0031000D91683158714209F80000A704D4F29C0E,它的長度是20個八位位組,而最左方的 00 位組 是PDU串中的短訊息服務中心欄位,AT+CMGS=<length>指令的<length>不將其計算在內,所以首 先應該傳送AT+CMGS=19<cr>: 如上圖所示,手機返回了 AT+CMGS=19 >
這是要儘快輸入PDU串:0031000D91683158714209F80000A704D4F29C0E 正確輸入了PDU串後,還需要輸入一個控制字元<ctrl+z> 1A &h通過手機立即將它傳送出去,或 輸入<esc> 1B &h通過終端裝置放棄。 手機返回 +CMGS: 111 OK
說明短訊息傳送成功!返回的訊息參考是111,表示這是傳送成功的第111條訊息(服務中心不保 證該值絕