GSM短信收发介绍
1、短消息收發的實現模式
Gsm收發短消息又分三種模式:BLOCK 模式、TEXT 模式和PDU 模式。BLOCK 模式現在用的很少了;TEXT 模式則只能發送ASCII 碼,它不能發送中文的UNICODE碼(確切地講,從技術上來說是可以用于發送中文短消息的,但是國內的手機基本上不支持);而PDU 模式開發起來則較為復雜,它需要編寫專門的函數來將文本轉換為PDU 格式,但PDU 模式被所有手機支持,可以使用任何字符集,它也是手機默認的編碼方式。
2、PDU 模式詳細介紹
用PDU 模式收發短消息可以使用三種編碼: 7-bit 編碼、8-bit 編碼和UCS2 編碼。7-bit編碼用于發送普通的ASCII字符;8-bit 編碼通常用于發送數據消息,如圖片或鈴聲等;UCS2編碼用于發送Unicode 字符。由于我們在系統中要實現中文短消息的發送,所以選擇用UCS2編碼,即中文Unicode 碼。
2.1 UCS2 編碼原理
所謂UCS2 編碼,是將單個的字符(1-2 個字節)按ISO/IEC10646 的規定,轉變為16 位的Unicode 寬字符。即將單個的字符轉換為由四位的‘0’-‘9’、‘A’-‘F’的數字和字母組成的字符串。待發送的消息以UCS2 碼的形式進行發送。
2.2 發送PDU 串的結構分析
通過UCS2 編碼我們得到中文Unicode 碼,接著就可以進行發送PDU 串的編制了。從表面上看,PDU 串是ASCII 碼串,同樣由‘0’-‘9’、‘A’-‘F’這些數字和字母組成。它們是8 位字節的十六進制數,或者BCD 碼十進制數。PDU 串除了包含所發送的消息本身外,還包含很多其它參數信息,如服務中心號碼、目標號碼和編碼方式等。現用一個實例說明發送PDU 串的結構和編排方式。
例:08 91 683108100005F0 31 00 0D 91 683119109991F2 00 08 C2 06 60A8597DFF01
分段含義解釋說明
08 SMSC 地址信息的長度共8 個八位字節(包括91)
91 SMSC 地址格式(TON/NPI) 用國際格式號碼(在前面加‘+’)
68 31 08 10 00 05 F0 SMSC 地址8613800100500,補‘F’湊成偶數個
31 基本參數(TP-MTI/VFP) 要求發送回復
00 消息基準值(TP-MR) 0
0D 目標地址數字個數共13 個十進制數
91 目標地址格式(TON/NPI)
A1:國內格式
91:國際格式
81:未知,+86 可帶可不帶。
683119109991F2 目標地址(TP-DA) 8613910199192,補‘F’湊成偶數個
00 協議標識(TP-PID) 是普通GSM 類型,點到點方式
08 用戶信息編碼方式
(TP-DCS)
00:表示7-bit 編碼, 08:表示UCS2 編碼,
04:表示8-bit 編碼。
C2 有效期(TP-VP) 5 分鐘
06 用戶信息長度(TP-UDL) 實際長度6 個字節
60 A8 59 7D FF 01 用戶信息(TP-UD) “您好!”
這里需要注意的幾點:
①比較SMSC 地址分段:68 31 08 10 00 05 F0 與真實SMSC 地址8613800100500F(為
了湊足14 位,在末尾補F),不難發現只需將前者奇偶位對調即可得到后者。同樣,目標地址分段683119109991F2 與實際目標地址13910199192F 之間的關系也是如此。
②若“SMSC 地址信息的長度”分段的值為00,則意味著SMSC 地址字符串的長度為零,PDU 串的“SMSC 地址格式”段和“SMSC 地址”段將省去。且將使用SIM 卡設置的SMSC 地址。
上例中的PDU 串變為:00 31 00 0D 91 683119109991F2 00 08 C2 06 60A8597DFF01
③.對于用戶信息長度,可通過VB 中的Len 函數求得,如“您好!”,用Len(“您好!”)
得到是3,那么3*2=6 即為用戶信息長度06(這里要轉換為16 進制,并且是兩位)。
④用戶信息(TP-UD)段最大容量是140 字節,所以在UCS2 編碼方式下,可發送短消息的最大字符數是70 個。
2.3 接收pdu串的結構分析
接收PDU 串和發送PDU 串結構是不完全相同的。通過一個實例來分析,假定收到的短消息其PDU 串為:08 91 68 31 08 10 00 05 F0 04 0D 91 68 31 19 10 99 91 F2 00 08 40 40 60 31 35 30 23 06 60 A8 59 7D FF 01
參照規范,具體分析:
分段含義解釋說明
08 SMSC 地址信息的長度共8 個八位字節(包括91)
91 SMSC 地址格式(TON/NPI) 用國際格式號碼(在前面加‘+’)
68 31 08 10 00 05 F0 SMSC 地址8613800100500,補‘F’湊成偶數個
84 基本參數(TP-MTI/MMS/RP) 接收,無更多消息,有回復地址
0D 回復地址數字個數共13 個十進制數(不包括91 和‘F’)
91 回復地址格式(TON/NPI) 國際格式
68 31 19 10 99 91 F2 回復地址(TP-RA) 8613910199192,補‘F’湊成偶數個
00 協議標識(TP-PID) 是普通GSM 類型,點到點方式
08 用戶信息編碼方式(TP-DCS) UCS2 編碼
40 90 10 31 35 30 23 服務時間戳(TP-SCTS) 2004-09-01 13:53:03
06 用戶信息長度(TP-UDL) 實際長度6 個字節
60 A8 59 7D FF 01 用戶信息(TP-UD) “您好!”
通過分析,我們可以獲取其中的有用信息。如:短信服務中心號碼是+8613800100500,發送方號碼是13910199192,發來的消息內容是“您好!”,以及發送時間是:2004-09-01 13:53:03。
總結
- 上一篇: 耦合的类型
- 下一篇: ARM嵌入式的位绑定原理