(九) 短信部分——PDU簡介及其格式
PDU是大多數手機短信通信的核心,僅有少數手機只支持Text模式(例如筆者的MOTO C330)。PDU模式比起Text模式能夠提供能爲強大的功能,但其編碼較Text模式困難。不管哪一種模式,咱們均可以經過AT指令控制終端實現短信的發送、接收、刪除等管理。下面主要介紹PDU的構成及編碼解碼。
PDU的構成
PDU是由一串由「0-9」及「A-F」組成。表面上看起來就是一組16進制的數所組成的。
下面舉一個發送和接收的例子。
一、 手機發送的一個PDU串:
0891683108200805F011190D91683188902848F40008FF108FD9662F4E0067616D4B8BD577ED4FE
對比3GPP協議獲得:(二進制代碼從左到右依次爲高位->低位)
短信中心地址字段
08 地址長度:8個字節,包括其後的91
91 地址類型:10010001
Bit7:1。始終爲1
Bits 6,5,4:Type-of-Number(號碼類型):001,表明Internation Number。也便是號碼前加「+」。注意:對某些比較特殊的號碼,例如手機與小靈通的互通時,這裏不能設置爲001,而要設置成000,表明號碼前沒有「+」,不然沒法接收。
Bits 3,2,1:Numbering-plan-identification:通常默認爲0001,表示電話號碼類型的。
683108200805F0 短信中心號碼:一個字節內反轉,8613800280500,若是長度爲奇數則須要加「F」補齊
FirstOctet字段
11 包含TP-MTI(2bit),TP-RD(1bit),TP-VPF(2bit),TP-RP(1bit),TP-UDHI(1bit),TP-SRR(1bit)
二進制表示形式:0 0 0 10 0 01
TP-MTI:01
TP-Message-Type-Indicator(消息類型指示符)
Bit1,0:01 指示爲SMS-SUBMIT類型
TP-RD:0
TP-Reject-Duplicates(是否拒絕相同重複消息)
Bit2:0 指示短消息中心接受未轉發的具備相同TP-MR的消息。
TP-VPF:10
TP-Validity-Period-Format(有效期格式)
Bit4,3:10 指示使用相對格式。
TP-SRR:0
TP-Status-Report-Request
Bit5:0 指示不使用狀態報告。
TP-UDHI:0
TP-User-Data-Header-Indicator(用戶數據頭標示)
Bit6:0 指示這是一個SMS消息,沒有用戶數據頭。EMS消息須要設置。
TP-RP:0
TP-Reply-Path(回覆路徑)
Bit7:0 指示沒有設置回覆路徑。
消息參考值TP-MR
19 TP-Message-Reference
對方號碼字段
0D91683188902848F4
其結構與短信中心號碼字段部分相似,再也不贅述。
協議標識TP-PID
00 TP-Protocol-Identifier(上層協議指示),通常設置爲00,表示普通GSM,點對點
編碼方法TP-DCS
08 TP-Data-Coding-Scheme(數據編碼設置),指示TP-UD的編碼方式。08表明Unicode方式。00爲7Bit編碼
有效期TP-VP
FF TP-Validity-Period(有效期)。FF表示最大。
用戶數據長度TP-UDL
10 TP-User-Data-Length(用戶數據長度)
0x10長度。注意不一樣編碼下用戶長度定義不一樣。
用戶數據TP-UD
8FD9662F4E0067616D4B8BD577ED4FE TP-User-Data
中文「這是一條測試短信」的Unicode編碼
二、 手機接收的PDU串
0891683108200805F0040D91683188902848F4000850208151754500108FD9662F4E0067616D4B8BD577ED4FE1
短信中心地址字段
0891683108200805F0:+861380280500
FirstOctet
04
其二進制代碼:00000100
TP-MTI:00
TP-MMS(TP-More-Message-to-Send):1 短信中心沒有更多的消息發送
TP-SRI:0
TP-UDHI:0
TP-RP:0
發送方號碼
0D91683188902848F4:+8613880982844
協議標識
00 TP-DCS 點對點
編碼方式
08 TP-DCS Unicode編碼
短信中心時間戳
50208151754500 TP-SCTS 字節反轉05/02/18 15:57:45 最後的00表明時區,這裏爲0
用戶數據長度
10 TP-DHL
用戶數據
8FD9662F4E0067616D4B8BD577ED4FE1 TP-UD
中文「這是一條測試短信」的Unicode編碼html
http://www.wangchao.net.cn/bbsdetail_61534.htmlide