小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

短信開發(fā)基礎(chǔ)知識以及短信貓發(fā)短信wappush短信.

 hh3755 2011-09-07

1.1. 基本知識

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

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

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

使用工具  windows 自帶超級終端

 

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

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

at 命令 ,at 命令是驅(qū)動短信設(shè)備的標準工業(yè)命令,除了業(yè)界的標準之外,每個廠商可能會對其進行擴展,不過一般來說,標準命令應(yīng)該夠用,這次用的是西門子 tc35i ,有專門的 at 命令文檔。

 

 

1.1.1.     相關(guān)文檔

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

Gsm03.40 規(guī)范: Technical realization of the Short Message Service (SMS) Point-to-Point (PP) 詳細介紹各種不同短信的不同實現(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)命令,可以說是 at  sms 規(guī)范。

1.1.2.     Block 模式

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

1.1.3.     Text 模式

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

AT  CGMF=1<CR>

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

1.1.4.     Pdu 模式

pdu 編碼主要包括兩個主要的部分,一是 pdu 串的整體數(shù)據(jù)格式,分別因為發(fā)送信息串和接收信息串而有區(qū)別,二是 pdu 中文本部分的編碼,分別因為字符集而不同。

我們也可以這樣來理解這個 pdu 編碼的格式, sms 相當于一個協(xié)議棧,最簡單的協(xié)議棧:

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

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

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

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

4、  SM-LL: 鏈路層。

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

 

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

 

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

1.2.1.     英文 7 位編碼

 

圖片不能正確顯示

這是
 gsm 的默認編碼方式

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

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

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

1.2.3.     中文 pdu 編碼

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

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

1.2.4.     Wap-push 中的中文編碼

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

 

1.3. 短信報頭分析

1.3.1.     短信類型

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

 sms 中到底支持多少種類型的短信,短信類型由什么進行控制,這是我們在這里需要著重介紹的問題。

在傳輸層來分,一共有六大短信類型: SMS-DELIVER  SMS-DELIVER-REPORT , SMS-SUBMIT

, SMS-SUBMIT-REPORT  SMS-STATUS-REPORT , SMS-COMMAND ,這六種短信類型,由短信中心地址后的第一個字節(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

 

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

1.3.2.    地址編碼

短信發(fā)送中都會涉及到短信地址的問題,他們的編碼規(guī)則是一致的 , 簡單來說就是 BCD8421編碼。

如: 08 91 683108501505F 0 ,

08 :地址長度,(號碼類型 + 號碼長度) /2 的十六進制表示

91 :號碼類型

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

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

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

1.3.4.     第一個字節(jié)

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

 

 

位數(shù)

MSG_Deliever

MSG_SUBMIT

7

TP_RP (回復(fù)地址)

TP_RP

6

TP_UDHI (數(shù)據(jù)報頭)

TP_UDHI

5

TP_SRI (需要回復(fù))

TP_SRR (請求回復(fù))

4

 

TP_VPF( 時間格式 )

3

 

2

TP_MMS (多條短信標志, 1為無, 0 為有)

TP_RD( 拒絕重復(fù)標志 )

1 , 0

TP_MTI (短信類型)

TP_MTI

常見值

04 ,正常收到, 44 ,有報頭短信

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

1.3.5.     TP-PID (協(xié)議標識)

在這個里面還有一個字節(jié)比較特殊,就是協(xié)議標識。

一般都是 00 ,表示點到點的標準短信。

1.3.6.     超長短信

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

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

1.3.7.     Wap-push 短信

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

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

1、  含有數(shù)據(jù)報頭,也就是 TP_UDHI 位為 1 ,一般來說 pdu 的第一個字節(jié)發(fā)送時為 51 ,接收時為 44 。

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

1.4. 編碼示例

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

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

 

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

 

下面分析這條信息:

 

08

短信息中心地址長度。(短信息中心號碼類型 + 短信息中心號碼長度 /2 的十六進制表示)

91

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

683108501505F 0

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

11

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

00

信息參考號。( TP-MR 

0D

被叫號碼長度。被叫號碼長度的十六進制表示。

81

被叫號碼類型。

3106656930F 1

被叫號碼,也經(jīng)過了移位處理,實際號碼為 13605696031 。

00

協(xié)議標識 (TP-PID), 是普通 GSM 類型,點到點方式

00

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

FF

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

0B

短信息長度

E8329BFD06DDDF723619

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

1.4.2.     接受信息的 PDU 

讀取以上發(fā)送出來的



短信貓發(fā)WAPpush短信:

http://xjbclz./article/xjbclz-9-943385.html
點到點短信WAPPUSH研究總結(jié)
 
1、  在短信群發(fā)器里面插入移動的SIM卡,插上電源,并將群發(fā)器連接到串口上。
2、  點擊開始菜單》程序》附件》通訊》超級終端,新建一個連接,例如取名為SMS,如圖一所示

圖一
點擊確定,選擇連接群發(fā)器的串口,如圖二所示

圖二
點擊確定,在彈出的對話框中選擇每秒位數(shù)9600(這個值因不同的群發(fā)器而有所不同,可以在4800,9600,19200這幾個值中試試看那個是對的),其他不要動,。如圖三
 

圖三
點擊確定。在超級終端的窗口中輸入at,如果出現(xiàn)OK說明連接成功。
3、  依次輸入:
 
at+cmgf=0回車
at+cmgs=99回車
0051000BA13119907311F000F5A7550B05040B8423F0000303010129060603AE81EA8DCA02056A0045C6080C0333672E6C6574762E636E2F000103E782B9E587BBE8BF9BE585A5E4B990E8A786E7A7BBE58AA8E4BCA0E5AA923347E997A8E688B7000101再按ctrl+z
 
如圖四所示:

圖四
 
這時13910937110的手機就會收到一條短信,標題為“點擊進入樂視移動傳媒3G門戶”,內(nèi)容是一個鏈接,連接地址是http://3g./
 
4、  下面解析一下:
at+cmgf=0的意思是設(shè)置短信發(fā)送格式為pdu格式。
at+cmgs=99的意思是發(fā)送一條短信,短信的總的長度(包括頭部和內(nèi)容)是99+1個字節(jié)(為什么是99+1個字節(jié),而不是99個字節(jié)我也不清楚)。
下面的
0051000BA13119907311F000F5A7550B05040B8423F0000303010129060603AE81EA8DCA02056A0045C6080C0333672E6C6574762E636E2F000103E782B9E587BBE8BF9BE585A5E4B990E8A786E7A7BBE58AA8E4BCA0E5AA923347E997A8E688B7000101
就是短信的內(nèi)容的,他是十六進制的編碼,一個字節(jié)用兩個十六進制字符表示。我們可以把它分成兩部分,一部分是短信頭部,他們是前面的30個字節(jié),即
0051000BA13119907311F000F5A755
我們把它分成幾段來解析
0051000BA1這一段是死的,我們不用管它。
3119907311F0這一段是手機號碼,它的編碼是這樣的,在手機號碼后面加一個F,然后兩位兩位倒過來寫,例如3119907311F0表示的手機號碼是13910937110
00F5A7這一段是死的,我們不用管它。
55 表示短信內(nèi)容部分的字節(jié)數(shù)。用十六進制表示,例如55表示內(nèi)容部分為85個字節(jié)。
至此,短信頭部結(jié)束,后面是短信的內(nèi)容部分
0B05040B8423F0000303010129060603AE81EA8DCA02056A0045C6080C0333672E6C6574762E636E2F000103E782B9E587BBE8BF9BE585A5E4B990E8A786E7A7BBE58AA8E4BCA0E5AA923347E997A8E688B7000101
我們也把它分成幾段來解析
0B05040B8423F0000303010129060603AE81EA8DCA02056A0045C6080C03這一段是死的,我們不用管它。
33672E6C6574762E636E2F表示的是鏈接的地址的http://后面的部分,這里實際上是“3g./”他是UTF-8編碼。
 000103這一段是死的,我們不用管它
E782B9E587BBE8BF9BE585A5E4B990E8A786E7A7BBE58AA8E4BCA0E5AA923347E997A8E688B7這一段是短信的標題部分,用UTF-8編碼。
000101這一段是死的,我們不用管它
 
注:獲得一個字符串的UTF-8編碼的十六進制表示的方法很簡單,在記事本里面編輯,保存的時候選擇編碼方式為utf-8,然后用hexedit打開,去掉前面三個字節(jié),將后面的字節(jié)的十六進制拷出來就行了。
 
5、附錄,下面對上面說的那幾個死的段落進行一些解析:
a、  頭部0051000BA1段的解析
00 SMSC地址信息的長度,00表示不用設(shè)置SMSC地址,即用手機上設(shè)置短信中心號碼。
51 基本參數(shù)(TP-MTI/VFP) 不要求發(fā)送回復(fù)
00 消息基準值(TP-MR)
0B 對方電話的長度(即11位電話,一般的手機都是11位)
A1 目標地址格式 A1表示為國內(nèi)格式
b、  頭部00F5A7段的解析
00 協(xié)議標識(TP-PID) 是普通GSM 類型,點到點方式
F5 用戶信息編碼方式 (TP-DCS)
A7 有效期(TP-VP)
c、  內(nèi)容部分0B05040B8423F0000303010129060603AE81EA8DCA02056A0045C6080C03段的解析
0B WAP PUSH頭部的總長度
05040B8423F0表示接下來是一個WAP PUSH
00 表示是Concatenated Short Messages
03 長度
03 reference number
01 表示分成1個短信發(fā)送
01 當前包的序號
29060603AE81EA8DCA WSP
02 標記位
05 -//WAPFORUM//DTD SI 1.0//EN
6A UTF-8
00 標記開始
45
C6
08
0C href="http://
03 字符串開始
d、內(nèi)容部分000103這一段的解析
00 URL 字符串結(jié)束  
01 >
03 標題字符串開始
e、內(nèi)容部分000101這一段的解析
00 內(nèi)容描述字符串結(jié)束
01   
01
6、編碼工具的使用
WAPPUSH編碼.html是我寫的一個編碼工具,雙擊以后,輸入手機號碼,地址內(nèi)容,標題內(nèi)容,點擊編碼,自動獲得編碼內(nèi)容,將編碼內(nèi)容拷貝到超級終端運行即可。如圖:

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多