衛(wèi)二兵+韋福安
摘要:本文介紹了常用短信的格式,并對7位編碼、UCS2編碼的短信發(fā)送、接收的報文進(jìn)行了分析。
關(guān)鍵詞:短信;GSM;PDU
短信是日常通訊的主要手段,在GSM 03.38、GSM 03.40中定義了其技術(shù)實現(xiàn)。短信的收發(fā)共有三鐘方式,BLOCK方式,TEXT方式和PDU方式。PDU方式被所有的手機(jī)和短信通訊設(shè)備所支持。本文以具體的短信PDU編碼,介紹短信收發(fā)的實現(xiàn)。
短信PDU編碼,表面上是一串ASCII碼,由“0”-“9”、“A”-“F”這些數(shù)據(jù)和字母組成。它們其實是表示的是16進(jìn)制數(shù)。PDU由短信中心地址(SMSC)和傳輸協(xié)議數(shù)據(jù)單元(Transfer Protocol Data Unit)組成。PDU可采用三種編碼:7位編碼、8位編碼、UCS2(16位)編碼。
在以PDU模式發(fā)送短信之前,需要設(shè)置短信發(fā)送模式為PDU方式:發(fā)送AT+CMGF=0
1.短信格式
短信中心號碼長度:為S2-S7的字節(jié)數(shù)。
短信中心號碼類型:常用值91,表示采用國際格式電話編碼。TON:占3位。001表示國際格式;010表示國內(nèi)格式。NPI:占4位。0001表示電話編碼。
短信中心號碼:若為奇數(shù),在最后面補(bǔ)個F。
短信格式。常用設(shè)置:發(fā)送單條短信時,設(shè)置為11;發(fā)送長短信時,設(shè)置為51。
TP-RP:應(yīng)答路徑。0表示不設(shè)置;1表示設(shè)置。
TP-UDHL:短信數(shù)據(jù)頭標(biāo)識。0表示沒有信息頭;1表示包含信息頭。
TP-SRR:狀態(tài)報告要求。0表示不需要報告,1表示需要報告。
TP-VPF:短信有效期格式。00表示不提供有效期參數(shù);10表示采用相對格式;01表示采用增強(qiáng)格式;11表示采用絕對格式。
TP-RD:設(shè)置短信中心可以處理相同短信標(biāo)識的短信。0表示允許;1表示拒絕。
TP-MTI:短信類型標(biāo)識。00表示讀取短信;01表示發(fā)送短信;10表示短信狀態(tài)報告。
短信標(biāo)識(TP-MR),常用設(shè)置00。
接收方的號碼長度,是電話號碼的數(shù)字長度,不是轉(zhuǎn)換后的字節(jié)數(shù)。
接收方電話編碼類型,與短信中心號碼類型相同。
接收方號碼,若為奇數(shù),在最后面補(bǔ)個F。
短信類型(TP-PID),常用設(shè)置為00,點(diǎn)對點(diǎn)短信。類型定義-Bit7 Bit6:等于00時,表示參照bit0-bit5的參數(shù)定義。傳輸類型-Bit5:等于0時,表示點(diǎn)對點(diǎn)傳輸;等于1時表示網(wǎng)絡(luò)傳輸。信息類型-Bit4-Bit0:等于00000時,表示短信;等于00001時,表示電報……。
數(shù)據(jù)編碼方式(TP-DCS),常用設(shè)置00(7位編碼)、04(8位編碼)、08(UCS2編碼)。文本壓縮-Bit5:等于0時,禁用文本壓縮;等于1時,啟用文本壓縮。包含信息類別-Bit4:等于0時,表示不啟用 Bit1-Bit0設(shè)置的信息類別;等于1時為啟用。編碼類型-Bit3 Bit2:等于00時表示7位編碼;等于01時表示8位編碼;等于10時表示UCS2編碼。信息類別-Bit1 Bit0:00表示短信直接發(fā)送;01表示短信先存儲到SIM卡或模塊,再發(fā)送;10先判斷模塊和SIM卡有沒有空閑空間,如果有空閑空間,先保存,再發(fā)送;11表示將短信存儲到另一個存儲設(shè)備上。
短信有效期(TP-VP),常用設(shè)置為00。 根據(jù)【字節(jié)編碼T1】中TP-VPF參數(shù)設(shè)置。TP-VPF:00表示采用不提供有效期參數(shù),需要省略此字節(jié);10表示采用相對時間格式,共1個字節(jié),字節(jié)范圍00-FF,00表示5分鐘; 01表示采用增強(qiáng)格式,共7個字節(jié);11表示采用絕對格式,共7個字節(jié)。
短信內(nèi)容長度(TP-UDL)。當(dāng)編碼格式為7位編碼時,此值為編碼前對應(yīng)的字節(jié)數(shù)。當(dāng)編碼格式為8位或UCS2時,此值為D2-DN的字節(jié)數(shù)。
2.短信發(fā)送流程
1)首先發(fā)送AT+CMGS=XXX
2)收到“>”符號后,發(fā)送PDU串,最后再發(fā)送16進(jìn)制數(shù)<1A>。
3)等待接收到返回信息+CMGS:OK,表示短信發(fā)送成功。
3.短信PDU編碼分析
3.1.發(fā)送短信(7位編碼)
發(fā)送內(nèi)容:8個 “1”。
PDU串:0891683108504705F011000B913177277712F500000008B1582C168BC562
編碼分析:
08短信中心號碼長度:8字節(jié)
91國際格式電話編碼
683108504705F0短信中心號碼:8613800574500
11發(fā)送短信
00短信標(biāo)識
0B短信接收方電話號碼長度:11個數(shù)字,不包括電話編碼格式
91國際格式電話編碼
3177277712F5接收方手機(jī)號:13777277215
00點(diǎn)對點(diǎn)短信
007位編碼
00短信有效期,5分鐘
08短信內(nèi)容長度,編碼前為8個字節(jié)
B1582C168BC562 7位編碼的短信內(nèi)容:11111111
7位編碼原理:
3.2.接收短信(7位編碼)
接收內(nèi)容:8個 “1”。
PDU串:0891683108504705F0040D91683177277712F500007190822290432308B1582C168BC562
編碼分析:
08短信中心號碼長度:8字節(jié)
91國際格式電話編碼
683108504705F0短信中心號碼:8613800574500
04接收短信
0D短信接收方電話號碼長度:13個數(shù)字,不包括電話編碼格式
91國際格式電話編碼
683177277712F5接收方手機(jī)號:8613777277215
00點(diǎn)對點(diǎn)短信
007位編碼
71908222904323短信時間戳:17年09月28日22時09分34秒
08短信內(nèi)容長度,編碼前為8個字節(jié)
B1582C168BC562 7位編碼的短信內(nèi)容:11111111
總結(jié):
本文分析了普通短信的7位編碼PDU數(shù)據(jù)包,8位編碼和UCS2編碼的PDU數(shù)據(jù)包類似。開發(fā)人員可以使用此內(nèi)容實現(xiàn)短信模塊發(fā)送、接收短信。
參考文獻(xiàn):
[1]GSM 03.38 Version 5.3.0[S] , ETSI TC-SMG
[2]GSM 03.40 V7.3.0[S], ETSI TC-SMG