• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 298  文章 - 377  trackbacks - 0
            <2007年9月>
            2627282930311
            2345678
            9101112131415
            16171819202122
            23242526272829
            30123456

            常用鏈接

            留言簿(34)

            隨筆分類

            隨筆檔案

            文章檔案

            相冊(cè)

            收藏夾

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            1.1. 基本知識(shí)

            短信開發(fā)指通過串口 at 命令驅(qū)動(dòng)短信貓進(jìn)行短信發(fā)送和接收操作。

            java 主要使用 javax.comm 包進(jìn)行開發(fā),

            sun 公司網(wǎng)上地址 http://java.sun.com/products/javacomm/

            使用工具 windows 自帶超級(jí)終端

             

            短信貓操作分為三種模式 block,pdu Text

            短信傳送有三種編碼 7 位, 8 位, UniCode

            at 命令 ,at 命令是驅(qū)動(dòng)短信設(shè)備的標(biāo)準(zhǔn)工業(yè)命令,除了業(yè)界的標(biāo)準(zhǔn)之外,每個(gè)廠商可能會(huì)對(duì)其進(jìn)行擴(kuò)展,不過一般來(lái)說(shuō),標(biāo)準(zhǔn)命令應(yīng)該夠用,這次用的是西門子 tc35i ,有專門的 at 命令文檔。

             

            1.1.1.     相關(guān)文檔

            Gsm03.38 規(guī)范: Alphabets and language-specific information 著重介紹短信發(fā)送中對(duì)字符集的控制部分

            Gsm03.40 規(guī)范: Technical realization of the Short Message Service (SMS) Point-to-Point (PP) 詳細(xì)介紹各種不同短信的不同實(shí)現(xiàn)

            Gsm07.05 規(guī)范: Use of Data Terminal Equipment - Data Circuit terminating;Equipment (DTE - DCE) interface for Short Message Service (SMS) and Cell Broadcast Service (CBS) ,介紹 at 的一些控制命令。

            Gsm07.07 規(guī)范:著重介紹 at 的短信相關(guān)命令,可以說(shuō)是 at sms 規(guī)范。

            1.1.2.     Block 模式

            Block 模式基本已經(jīng)被 pdu 模式取代,沒有具體研究

            1.1.3.     Text 模式

            Text 模式比較簡(jiǎn)單,但是支持的設(shè)備不是很全,而且對(duì)于中文似乎有些問題,在金笛的網(wǎng)站技術(shù)資料中似乎提到了一句不能實(shí)現(xiàn)中文。

            AT CGMF=1<CR>

            AT CGMS= 13605696031 ,129<CR>
            >Hello World!<^Z>

            1.1.4.     Pdu 模式

            pdu 編碼主要包括兩個(gè)主要的部分,一是 pdu 串的整體數(shù)據(jù)格式,分別因?yàn)榘l(fā)送信息串和接收信息串而有區(qū)別,二是 pdu 中文本部分的編碼,分別因?yàn)樽址煌?/span>

            我們也可以這樣來(lái)理解這個(gè) pdu 編碼的格式, sms 相當(dāng)于一個(gè)協(xié)議棧,最簡(jiǎn)單的協(xié)議棧:

            根據(jù) gsm03.40 規(guī)范, sms 協(xié)議包括以下幾層:

            1、  SM-AL :應(yīng)用層。這個(gè)部分就是數(shù)據(jù)部分。

            2、  SM-TL :傳輸層。我們可以清楚的看到這里描述了主要的短信內(nèi)容,包括發(fā)送號(hào)碼,接收號(hào)碼,信息類型,編碼,數(shù)據(jù)報(bào)長(zhǎng)度等等,這也是我們編程主要要面對(duì)的問題。

            3、  SM-RL :中繼層。這個(gè)指的是短信在網(wǎng)關(guān)之間中繼需要的協(xié)議。

            4、  SM-LL: 鏈路層。

            從上述描述中我們可以清楚的看到,我們編程主要集中于傳輸層。

             

            PDU 串的用戶信息 (TP-UD) 段最大容量是 140 字節(jié),所以在這三種編碼方式下,可以發(fā)送的短消息的最大字符數(shù)分別是 160 140 70 。這里,將一個(gè)英文字母、一個(gè)漢字和一個(gè)數(shù)據(jù)字節(jié)都視為一個(gè)字符。

             

            1.2. SMS 用戶數(shù)據(jù)的編碼方法

            1.2.1.     英文 7 位編碼

            圖片不能正確顯示

            這是
            gsm 的默認(rèn)編碼方式

            由于這樣的移位,我們可以看到我們能發(fā)的最多英文字符等于: 140*8/7 = 160

            1.2.2.     數(shù)據(jù) 8 位編碼

            8-bit 編碼通常用于發(fā)送數(shù)據(jù)消息,比如圖片和鈴聲等;

            1.2.3.     中文 pdu 編碼

            發(fā)送中文時(shí),必須用 UCS2 utf-16 )進(jìn)行編碼,最多可以發(fā) 140/2 70 個(gè)漢字。

            UniCode 編碼轉(zhuǎn)換也比較簡(jiǎn)單,以中文為例,一個(gè)中文字符是兩個(gè)字節(jié),直接對(duì)高位字節(jié)和低位字節(jié)進(jìn)行十六進(jìn)制轉(zhuǎn)換就可以了。如“歡迎”, UniCode 編碼是 6B22 8FCE ,這同時(shí)也就是轉(zhuǎn)換的結(jié)果,如果發(fā)送的串中有英文字符,那么在前面補(bǔ)全 00 ,以保證一個(gè)字符對(duì)應(yīng)兩個(gè)字節(jié)。

            1.2.4.     Wap-push 中的中文編碼

            wap-push 短信的時(shí)候有些問題了,開始的時(shí)候也按照 Unicode 編碼處理,總是失敗,后來(lái)才發(fā)現(xiàn),有個(gè)編碼字段設(shè)為了 uft-8 ,所以在這種情況下,還是可以出現(xiàn)其他編碼方式的。

             

            1.3. 短信報(bào)頭分析

            1.3.1.     短信類型

            詳細(xì)請(qǐng)參考 gsm 0438 規(guī)范和 gsm0440 規(guī)范,里面有詳細(xì)的關(guān)于各種短消息類型的描述。

            sms 中到底支持多少種類型的短信,短信類型由什么進(jìn)行控制,這是我們?cè)谶@里需要著重介紹的問題。

            在傳輸層來(lái)分,一共有六大短信類型: SMS-DELIVER SMS-DELIVER-REPORT SMS-SUBMIT SMS-SUBMIT-REPORT SMS-STATUS-REPORT SMS-COMMAND ,這六種短信類型,由短信中心地址后的第一個(gè)字節(jié)的最低兩位控制。

            bit1

            bit0

            Message type

            0

            0

            SMS-DELIVER (in the direction SC to MS)

            0

            0

            SMS-DELIVER REPORT (in the direction MS to SC)

            1

            0

            SMS-STATUS-REPORT (in the direction SC to MS)

            1

            0

            SMS-COMMAND (in the direction MS to SC)

            0

            1

            SMS-SUBMIT (in the direction MS to SC)

            0

            1

            SMS-SUBMIT-REPORT (in the direction SC to MS)

            1

            1

            Reserved

             
















            也就是說(shuō),每個(gè)短信在短信中心地址之后的第一個(gè)字節(jié)的最低兩位是至關(guān)重要的。他決定了如何讀這條短信(結(jié)合是發(fā)送的,還是接收的)

            1.3.2.     地址編碼

            短信發(fā)送中都會(huì)涉及到短信地址的問題,他們的編碼規(guī)則是一致的 , 簡(jiǎn)單來(lái)說(shuō)就是 BCD8421編碼

            如: 08 91 683108501505F 0

            08 :地址長(zhǎng)度,(號(hào)碼類型 + 號(hào)碼長(zhǎng)度) /2 的十六進(jìn)制表示

            91 :號(hào)碼類型

            683108501505F 0 :號(hào)碼,實(shí)際號(hào)碼應(yīng)為: 8613805515500 ,號(hào)碼處理方法為 , 如果為 +86 開始 , + 號(hào)去掉 , 然后判斷是否為偶數(shù) , 不是在末尾補(bǔ) F, 然后將奇數(shù)位和偶數(shù)位互換

            1.3.3.     TP-DCS( 數(shù)據(jù)編碼格式 )

            這個(gè)字節(jié)比較特殊,表明整個(gè)短信的字符編碼,數(shù)據(jù)內(nèi)容等信息。詳細(xì)說(shuō)明參考 gsm03.38 規(guī)范。

            1.3.4.     第一個(gè)字節(jié)

            Pdu 編碼的第一個(gè)字節(jié)比較有意思,這個(gè)字節(jié)會(huì)根據(jù)六種不同的短信按位有不同的意思,拿句專業(yè)一點(diǎn)的話來(lái)說(shuō),叫 bitmask. 用圖來(lái)大概描述一下,詳細(xì)參考 gsm0340 9.2.3 段。

             

            位數(shù)

            MSG_Deliever

            MSG_SUBMIT

            7

            TP_RP (回復(fù)地址)

            TP_RP

            6

            TP_UDHI (數(shù)據(jù)報(bào)頭)

            TP_UDHI

            5

            TP_SRI (需要回復(fù))

            TP_SRR (請(qǐng)求回復(fù))

            4

             

            TP_VPF( 時(shí)間格式 )

            3

             

            2

            TP_MMS (多條短信標(biāo)志, 1 為無(wú), 0 為有)

            TP_RD( 拒絕重復(fù)標(biāo)志 )

            1 0

            TP_MTI (短信類型)

            TP_MTI

            常見值

            04 ,正常收到, 44 ,有報(bào)頭短信

            11 ,正常發(fā)送, 51 ,有報(bào)頭短信

            1.3.5.     TP-PID (協(xié)議標(biāo)識(shí))

            在這個(gè)里面還有一個(gè)字節(jié)比較特殊,就是協(xié)議標(biāo)識(shí)。

            一般都是 00 ,表示點(diǎn)到點(diǎn)的標(biāo)準(zhǔn)短信。

            1.3.6.     超長(zhǎng)短信

            參考 gsm0340 9.2.3 .24TP_UD 部分,這個(gè)部分中間的一種情況就是描述超長(zhǎng)短信的處理。

            長(zhǎng)短信關(guān)鍵涉及一個(gè)數(shù)據(jù)報(bào)頭的問題,數(shù)據(jù)報(bào)頭由“長(zhǎng)度”和多個(gè)“數(shù)據(jù)元素”組成。

            1.3.7.     Wap-push 短信

            WAP 的推送協(xié)議中定義了服務(wù)指示( SI Service Indication )和服務(wù)加載( SL Service Load )兩項(xiàng)服務(wù),以給用戶和網(wǎng)絡(luò)運(yùn)營(yíng)者更多的選擇。服務(wù)指示是將新信息的指示和相關(guān)的通用資源標(biāo)識(shí)符( URI )推送給用戶,由用戶選擇是立即處理信息還是以后處理。服務(wù)加載是將一項(xiàng)服務(wù)的 URI 推送給用戶,然后客戶端自動(dòng)地使用 PULL 技術(shù)根據(jù)該 URI 啟動(dòng)服務(wù)。兩種服務(wù)的區(qū)別在于用戶是否介入推送信息的處理過程。 SL 對(duì)推送信息的處理對(duì)用戶來(lái)說(shuō)是透明的,而 SI 則在指示用戶的同時(shí),請(qǐng)用戶對(duì)隨后的處理做出選擇。
            PUSH
            可以將某一站點(diǎn)或某一業(yè)務(wù)的鏈接通過短信發(fā)送到支持 WAP PUSH 功能的手機(jī)上,這樣用戶只需要閱讀這條短信,打開短信中的鏈接,就可以直接訪問業(yè)務(wù)了。因此, WAP PUSH 實(shí)現(xiàn)了短信和 WAP 業(yè)務(wù)的結(jié)合,節(jié)省了用戶尋找業(yè)務(wù)的時(shí)間,方便用戶直接找到并使用自己喜歡的業(yè)務(wù)。

            Wap-push 短信的核心不同之處就在于:

            1、  含有數(shù)據(jù)報(bào)頭,也就是 TP_UDHI 位為 1 ,一般來(lái)說(shuō) pdu 的第一個(gè)字節(jié)發(fā)送時(shí)為 51 ,接收時(shí)為 44

            2、  TP_DSC 字節(jié)不同,一般為 F5 ,表明字符集為 8 位,短信類型為 Class 1; 詳細(xì)解釋參看 gsm03.38 的第四章。

            1.4. 編碼示例

            1.4.1.     發(fā)送信息的 PDU 串:

            用手機(jī)寫一條短信息,發(fā)送手機(jī)號(hào)碼為 13605696031 ,信息內(nèi)容為“ Hello World! ”。通過執(zhí)行 AT CMGL=2 可以讀出此條信息。

             

            AT CMGL=2 { 讀未發(fā)短信息 }
            CMGL: 1,2,,24 {1 表示信息個(gè)數(shù), 2 表示未發(fā)信息, 24 表示信息總?cè)萘?/span> }
            08 91 683108501505F0 11 00 0B 81 3106656930F1 0000FF 0B E8329BFD06DDDF723619
            OK

             

            下面分析這條信息:

            08

            短信息中心地址長(zhǎng)度。(短信息中心號(hào)碼類型 + 短信息中心號(hào)碼長(zhǎng)度 /2 的十六進(jìn)制表示)

            91

            短信息中心號(hào)碼類型, 91 TON/NPI TON/NPI 遵守 International/E.164 標(biāo)準(zhǔn),指在號(hào)碼前需加‘+’號(hào) ; 此外還可有其他數(shù)值,但 91 最常用。

            683108501505F 0

            短信息中心號(hào)碼,是所使用的服務(wù)中心地址。由于位置上略有處理,實(shí)際號(hào)碼應(yīng)為: 8613805515500( 字母 F 意指長(zhǎng)度減 1), 這是作者所在地 GSM 短信息中心的號(hào)碼。 ( 號(hào)碼處理方法為 , 如果為 +86 開始 , + 號(hào)去掉 , 然后判斷是否為偶數(shù) , 不是在末尾補(bǔ) F, 然后將奇數(shù)位和偶數(shù)位互換 )

            11

            文件頭字節(jié) (header byte, 是一種 bitmask) 。這里 11 指正常地發(fā)送短信息。

            00

            信息參考號(hào)。( TP-MR

            0D

            被叫號(hào)碼長(zhǎng)度。被叫號(hào)碼長(zhǎng)度的十六進(jìn)制表示。

            81

            被叫號(hào)碼類型。

            3106656930F 1

            被叫號(hào)碼,也經(jīng)過了移位處理,實(shí)際號(hào)碼為 13605696031

            00

            協(xié)議標(biāo)識(shí) (TP-PID), 是普通 GSM 類型,點(diǎn)到點(diǎn)方式

            00

            用戶信息編碼方式 (TP-DCS) , 7-bit 編碼( 08 UCS2 編碼)

            FF

            有效期 (TP-VP), 短信的有效時(shí)間

            0B

            短信息長(zhǎng)度

            E8329BFD06DDDF723619

            短信息內(nèi)容“ Hello World! ”。

            1.4.2.     接受信息的 PDU

            讀取以上發(fā)送出來(lái)的短信,可以收到如下信息 , 接受到來(lái)自 13600554267 的“歡迎“ PDU 串為: 0891683108503705F0040D91683106504562F7000830507001021500046B228FCE 。而接受到的“歡迎“ PDU 串為:

            0891683108503705F0040D91683106504562F70000305070010201000AE8329BFD4697D9EC37 。對(duì)以上的 PDU 串分析如下表:

             

            含義

            說(shuō)明

            08

            SMSC 地址信息的長(zhǎng)度

            8 個(gè)八位字節(jié) ( 包括 91)

            91

            SMSC 地址格式 (TON/NPI)

            用國(guó)際格式號(hào)碼 ( 在前面加 ‘+’)

            683108503705F 0

            SMSC 地址

            8613800573500 ,補(bǔ) ‘F’ 湊成偶數(shù)個(gè)

            04

            基本參數(shù) (TP-MTI/MMS/RP)

            接收,無(wú)更多消息,有回復(fù)地址,如果為 00 ,就沒有以下關(guān)于回復(fù)地址的三個(gè)段

            0D

            回復(fù)地址數(shù)字個(gè)數(shù)

            13 個(gè)十進(jìn)制數(shù) ( 不包括 91 ‘F’)

            91

            回復(fù)地址格式 (TON/NPI)

            用國(guó)際格式號(hào)碼 ( 在前面加 ‘+’)

            683106504562F 7

            回復(fù)地址 (TP-RA)

            8613600554267 ,補(bǔ) ‘F’ 湊成偶數(shù)個(gè)

            00

            協(xié)議標(biāo)識(shí) (TP-PID)

            是普通 GSM 類型,點(diǎn)到點(diǎn)方式

            08

            用戶信息編碼方式 (TP-DCS)

            UCS2 編碼(即中文)

            30507001021500

            時(shí)間戳 (TP-SCTS)

            2003-3-12 08:36:45  +8 時(shí)區(qū)

            04

            用戶信息長(zhǎng)度 (TP-UDL)

            實(shí)際長(zhǎng)度 4 個(gè)字節(jié)

            6B228FCE

            用戶信息 (TP-UD)

            歡迎 !”

            1.4.3.     超長(zhǎng)短信

            所謂超長(zhǎng)短信不同的地方無(wú)非就是數(shù)據(jù)報(bào)文需要有個(gè)拼接的過程,這個(gè)詳細(xì)可以參考 gsm03.40 9.2.3 .24.1 段。下面是個(gè)例子,表明的是短信的第一條和第二條。

            第一條

            0891683108100005F0

            SMSC 地址

            44

            有協(xié)議頭標(biāo)志

            0D91683118216553F6

            回復(fù)地址

            0008

            TP-PID TP-DCS

            60403011142423

            時(shí)間戳 (TP-SCTS)

            8C

            用戶信息長(zhǎng)度 (TP-UDL)

            05

            協(xié)議頭的長(zhǎng)度

            00

            標(biāo)志這是個(gè)分拆短信

            03

            分拆數(shù)據(jù)元素的長(zhǎng)度

            39

            唯一標(biāo)志(用于把兩條短信合并)

            02

            一共兩條

            01

            這是第一條

            4E8C96F64E005B9A4

            F1A597D597D597D76

            8465F 665F 665F 695F 4

            4E0D597D597D597D7684
            60254F
            1A4E8654754F604
            E5F4E0D898157284E006
            B21751F76EE8FDB665A
            70B954275417662F4E00
            4E2A4E1C5F20897F6211
            4E0D662F62117231597D
            4E86541754758BBE7F6E
            597D597D554A51765B83
            662F
            554A5475547554754
            F607684547562A4

            數(shù)據(jù)內(nèi)容

            第二條

            0891683108100005F0

            SMSC 地址

            44

            有協(xié)議頭標(biāo)志

            0D91683118216553F6

            回復(fù)地址

            0008

            TP-PID TP-DCS

            60403011145423

            時(shí)間戳 (TP-SCTS)

            26

            用戶信息長(zhǎng)度 (TP-UDL)

            05

            協(xié)議頭的長(zhǎng)度

            00

            標(biāo)志這是個(gè)分拆短信

            03

            分拆數(shù)據(jù)元素的長(zhǎng)度

            39

            唯一標(biāo)志(用于把兩條短信合并)

            02

            一共兩條

            02

            這是第二條

            81EA4ECE524D5C317761
            7740542754755475007A0
            07A
            006C0076006C006F0
            07A

            數(shù)據(jù)

             

            1.4.4.     Wap-push 短信

            發(fā)送的 pdu ,關(guān)于 wap-push 短信中間的 wbxml 該如何轉(zhuǎn)變和編碼,請(qǐng)參考 WAP Service Indication 規(guī)范。

            0891683108100005F0

            SMSC 地址

            51

            有協(xié)議頭標(biāo)志

            00

            TP_MR 消息基準(zhǔn)值

            0D91683118216553F6

            回復(fù)地址

            00

            TP-PID

            F5

            TP-DCS

            A7

            有效期 TP-VP

            85

            用戶信息長(zhǎng)度( TP-UDL

            0B

            WAP PUSH 頭部的總長(zhǎng)度

            05

            協(xié)議頭的長(zhǎng)度

            00

            標(biāo)志這是個(gè)分拆短信

            03

            分拆數(shù)據(jù)元素的長(zhǎng)度

            03

            唯一標(biāo)志(用于把兩條短信合并)

            01

            一共一條

            01

            這是第一條

            05040B8423F0

            表示接下來(lái)是一個(gè) WAP PUSH

            29060603AE81EA8DCA

            WSP

            02

            標(biāo)記位

            05

            -//WAPFORUM//DTD SI 1.0//EN

            6A

            UTF-8

            00

            標(biāo)記開始

            45

            <si>

            C6

            <indication

            08

            <action=signal-high>

            0C

            href="http://

            03

            字符串開始

            3231312e3133362e31353
            32e33302f776170707573
            682f70757368496e64657
            82e6a73703f7075736849
            643d3035303531313134
            313630353231

            URL

            00

            URL 字符串結(jié)束

            01

            > 

            03

            內(nèi)容描述字符串開始

            E8AFB7E782B9E587BB
            E4BBA5E4B88BE993B
            EE68EA5E88EB7E58F
            96E5BDA9E4BFA1E5
            8685E5AEB9

            內(nèi)容描述字符串

            00

            內(nèi)容描述字符串結(jié)束

            01

            </si>

            01

            </indication>

            posted on 2007-04-19 17:50 聶文龍 閱讀(947) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            国产精品无码久久四虎| 久久精品亚洲精品国产色婷| 91久久精品无码一区二区毛片| 色综合久久综合中文综合网| 久久精品国产亚洲av影院| 国产一区二区三区久久精品| 久久国产免费直播| 久久精品免费一区二区| 久久精品国产亚洲AV电影| 久久国产成人午夜AV影院| 久久人做人爽一区二区三区| 狠狠色丁香久久综合婷婷| 久久精品亚洲欧美日韩久久| 欧美亚洲国产精品久久| 久久AV高清无码| 久久天天躁夜夜躁狠狠躁2022 | 97超级碰碰碰碰久久久久| 怡红院日本一道日本久久 | 久久久久久久精品成人热色戒| 国产产无码乱码精品久久鸭| 性做久久久久久久久久久| 日本道色综合久久影院| 亚洲国产一成人久久精品| 7777久久久国产精品消防器材| 99久久婷婷国产一区二区| 国内精品人妻无码久久久影院| 久久99热这里只频精品6| 一级做a爰片久久毛片人呢| 人妻精品久久久久中文字幕69| 亚洲国产成人久久综合一区77| 久久最新精品国产| 久久久久久久久无码精品亚洲日韩| 中文字幕无码av激情不卡久久| 亚洲综合精品香蕉久久网97| 久久久青草久久久青草| 久久国产精品-久久精品| 国产精品久久久久久一区二区三区| 亚洲国产精品无码久久一区二区| 色天使久久综合网天天| 久久无码高潮喷水| 亚洲精品国产字幕久久不卡|