http://blog.sina.com.cn/s/blog_524846000101cwtr.html
部分摘自華清遠見網上資料。
GPRS 子產品,是具有GPRS資料傳輸功能的GSM子產品。GPRS子產品就是一個精簡版的手機,內建GSM通信的主要功能于一塊電路闆上,具有發送短消息、通話、資料傳輸等功能。GPRS子產品相當于手機的核心部分,如果增加鍵盤和螢幕就是一個完整的手機。普通電腦或者單片機可以通過RS232序列槽與GPRS子產品相連,通過AT指令控制GPRS子產品實作各種基于GSM的通信功能。
GPRS 子產品,是具有GPRS資料傳輸功能的GSM子產品。GPRS子產品就是一個精簡版的手機,內建GSM通信的主要功能于一塊電路闆上,具有發送短消息、通話、資料傳輸等功能。GPRS子產品相當于手機的核心部分,如果增加鍵盤和螢幕就是一個完整的手機。普通電腦或者單片機可以通過RS232序列槽與GPRS子產品相連,通過AT指令控制GPRS子產品實作各種基于GSM的通信功能。
在超級終端輸入:
At
OK
傳回OK則說明你的子產品可以正常工作,否則出現故障。
第一、文本模式下發送短信流程
文本模式下發送資訊基本分三步驟:
1. 設定發送模式
AT+CMGF=1
CMGF為0是以PDU模式發送,為1則是以文本方式發送。
2.接收方電話号碼
AT+CMGS=138XXXXxxxx
3.輸入内容
>hello world !
注意:每敲完一條指令都要按回車,直到傳回“>”後開始輸入資訊,但是在輸入完短信内容後不能敲回車而應該按組合鍵“ctrl+z”作為結束符。Enter鍵在ascii碼中的數值是“\r”,“ctrl+z”在ascii碼中的數值是“0x1a”,是以在程式設計時可以直接在資訊内容後進行字元串拼接。
示例:
=====================================================
AT
OK
AT+CMGF=1
OK
AT+CMGS=1380189xxxx
>hello word !
=====================================================
提示:AT指令不區分大小寫,是以無論是大寫還是小寫都可以識别。
傳回OK則說明你的子產品可以正常工作,否則出現故障。
第二、PDU模式下發送短信流程
Pdu模式發送資訊仍然是三步搞定,隻不過我們在前期得做一些稍微麻煩的資料轉換工作。
我們先來看流程理清脈絡:
1.AT+CMGF=0 設定為PDU模式發送中文編碼短信
2.AT+CMGS=資訊長度
3.發送短信
示例:
======================================================================
AT
OK
AT+CMGF=0
OK
AT+CMGS=25
>0891683108100005F011000D91685110906474F90A534E6E058FDC89C1FF01
======================================================================
前面的我們容易了解:
“AT+CMGF=0”将發送模式置為PDU模式;
“AT+CMGS=25”這句CMGS後面跟的不再是電話号碼了,而是“資訊長度”,這裡我加了雙引号表示有獨特的含義後面解釋。
現在分析最關鍵的地方:
“0891683108100005F011000D91685110906474F90008000A534E6E058FDC89C1FF01”
我們可以将這段頭疼的字元串分為三段:
-----------------------------------------------------------------------------------------
“0891683108100005F0 ” 中心号碼段
“11000D91685110906474F9000800” 收信方号碼段
“0A534E6E058FDC89C1FF01” 資訊段
-------------------------------------------------------------------------------------------
1. 先來看中心号碼段。
關于什麼是中心号碼我想百度比我解釋的更清楚,這裡不再贅述了。
我們其實還可以将其再細分:
08 91 683108100005F0
其中91是國際化的意思,這個作為字首必須加上。
683108100005F0是什麼意思呢?我們将它奇數位和偶數位反轉看看:
“683108100005F0”
“8613800100500F”
熟悉嗎?13800100500是中國移動北京地區的中心号碼,86是中國地區的字首這個大家應該清楚。F呢?因為在進行PDU編碼的時候規定了如果号碼位數是奇數位那麼就要在末尾加F進行補齊,由于我們國家的手機号碼位數都是11位,是以要在末尾補F。于是中國移動北京地區的中心号碼加86補齊F再奇偶位反轉最後加91國際化字首就由原來的:
“13800100500”
變成了:
“91683108100005F0”
接着我們數一下它有多少位,16位,16/2=8,是以我們把整個中心号碼組合編碼後的長度除以2,最後以十六進制的表示方式加在它的前端就大功告成了。
“0891683108100005F0”
Ok搞定,下一步繼續。
======================================================================
1. 收信方号碼段。
“11000D91685110906474F9000800”
同樣将其細分:
1100 0D91 685110906474F9 000800
其中“1100”和“000800”分别是收信方号碼段固定的字首和字尾,是以一定要記得加上。
“685110906474F9”不用講了,和中心号碼段一樣的編碼方式,原型是:
“8615010946479”(華清遠見北京總部執勤電話)。
“0D91”需要注意一下,其中這裡的“91”和中心号碼段的“91”意義不一樣了,這裡是表示接收方的裝置是手機的意思,“81”則是小靈通。“0D”是一個十六進制數,還原為十進制後是13,什麼意思呢?接受方的号碼是“8615010946479”共13位。
是以接收方電話經偶數位<補齊F>
然後<奇數偶數位反轉>
再<加上号碼長度>
最後<加上前字尾>最終由:
“8615010946479”
轉型為:
“11000D91685110906474F9000800”。
======================================================================
2. 資訊段。
“0A534E6E058FDC89C1FF01”
資訊段是最簡單的,大家需要了解GPRS以PDU模式發送資訊時,其内容是以unicode的方式編碼的。
其中:
“534E6E058FDC89C1FF01”
還原成GB漢字編碼為:
“華清遠見!”
其編碼(十六進制)長度是20位,20/2=10,10的十六進制表示方式是0X0A。是以資訊段的最終編碼為:
“0A534E6E058FDC89C1FF01”
3. 組合。
如果把發短信比喻為一次快遞的投遞過程,那麼過程如下:
首先是中心号碼(相當于我們的郵局);
接着是接收方号碼段(相當于我們的收信人位址);
最後是資訊段(就是你的信件了)。
OK,組合結果就是:
“0891683108100005F011000D91685110906474F90008000A534E6E058FDC89C1FF01”
至此,PDU的編碼就正式結束了。
不過我們還有最後一件事,那就是前面提到的那個“資訊長度”。
郵局是國家的公有的,我們無權去幹涉,但是收信人和資訊是我們自己制定的,是以我們要精确掌握自己所屬的資訊。
于是我們将中心号碼段剔除,變為:
“11000D91685110906474F90008000A534E6E058FDC89C1FF01”
計算一下字元串長度,50位。OK,50/2=25。
于是在PDU模式下,我們所謂的“資訊長度”:AT+CMGS=25。
回顧一下PDU模式下的發資訊流程:
======================================================================
AT
OK
AT+CMGF=0
OK
AT+CMGS=25
>0891683108100005F011000D91685110906474F90A534E6E058FDC89C1FF01
======================================================================
一定要記得最後輸完資訊編碼後要按“ctrl+z”而不是回車。
我做GPRS子產品實驗,用的是NeoWay“有方”的GPRS子產品,M660+。
短信中心号碼,需要根據SIM所在位址更換,下面列舉中國移動的短信中心号碼,備查。
中國移動短消息中心号碼大全
省份 城市 短消息中心号碼
北京 北京 13800100500
天津 天津 13800220500
河北 石家莊 13800311500
保定 13800312500
衡水 13800318500
邢台 13800319500
邯鄲 13800310500
張家口 13800313500
承德 13800314500
唐山 13800315500
廊坊 13800316500
滄州 13800317500
秦皇島 13800335500
山西 太原 13800351500
大同 13800352500
陽泉 13800353500
朔州 13800349500
呂梁 13800358500
忻州 13800350500
榆次 13800354500
長治 13800355500
晉城 13800356500
臨汾 13800357500
運城 13800359500
内蒙古 呼和浩特 13800471500
標頭 13800472500
集甯 13800474500
東勝 13800477500
臨河 13800478500
錫林浩特 13800479500
海拉爾 13800470500
赤峰 13800476500
烏海 13800473500
阿拉善左旗 13800483500
通遼 13800475500
烏蘭浩特 13800482500
遼甯 沈陽 13800240500
大連 13800411500
鞍山 13800412500
撫順 13800413500
本溪 13800414500
丹東 13800415500
錦州 13800416500
營口 13800417500
阜新 13800418500
遼陽 13800419500
鐵嶺 13800410500
朝陽 13800421500
盤錦 13800427500
葫蘆島 13800429500
吉林 長春 13800431500
吉林 13800432500
延吉 13800433500
四平 13800434500
通化 13800435500
白城 13800436500
遼源 13800437500
松源 13800438500
白山 13800439500
黑龍江 哈爾濱 13800451500
齊齊哈爾 13800452500
牡丹江 13800453500
佳木斯 13800454500
大慶 13800459500
上海 上海 13800210500
江蘇 蘇州 13800512500
鎮江 13800511500
南通 13800513500
常州 13800519500
無錫 13800510500
南京 13800250500
揚州 13800514500
鹽城 13800515500
徐州 13800516500
淮陰 13800517500
連雲港 13800518500
泰州 13800523500
宿遷 13800527500
浙江 杭州 13800571500
甯波 13800574500
嘉興 13800573500
金華 13800579500
溫州 13800577500
衢州 13800570500
舟山 13800580500
湖州 13800572500
紹興 13800575500
台州 13800576500
麗水 13800578500
安徽 滁州 13800550500
合肥 13800551500
蚌埠 13800552500
蕪湖 13800553500
淮南 13800554500
馬鞍山 13800555500
安慶 13800556500
宿州 13800557500
阜陽 13800558500
黃山 13800559500
淮北 13800561500
銅陵 13800562500
宣城 13800563500
六安 13800564500
巢湖 13800565500
貴池 13800566500
福建 福州 13800591500
廈門 13800592500
甯德 13800593500
莆田 13800594500
泉州 13800595500
漳州 13800596500
龍岩 13800597500
三明 13800598500
南平 13800599500
江西 南昌 13800791500
上饒 13800793500
鷹潭 13800701500
撫州 13800794500
九江 13800792500
宜春 13800795500
吉安 13800796500
贛州 13800797500
景德鎮 13800798500
萍鄉 13800799500
新餘 13800790500
山東 青島 13800532500
濟南 13800531500
淄博 13800533500
濰坊 13800536500
煙台 13800535500
威海 13800631500
臨沂 13800539500
萊蕪 13800634500
聊城 13800635500
日照 13800633500
棗莊 13800632500
德州 13800534500
濟甯 13800537500
荷澤 13800530500
泰安 13800538500
東營 13800546500
濱州 13800543500
河南 鄭州 13800371500
許昌 13800374500
開封 13800378500
商丘 13800370500
漯河 13800395500
周口 13800394500
平頂山 13800375500
信陽 13800376500
南陽 13800377500
洛陽 13800379500
焦作 13800391500
新鄉 13800373500
鶴壁 13800392500
駐馬店 13800396500
濮陽 13800393500
安陽 13800372500
三門峽 13800398500
湖北 武漢 13800270500
襄樊 13800710500
孝感 13800712500
鹹甯 13800715500
荊州 13800716500
宜昌 13800717500
恩施 13800718500
十堰 13800719500
随州 13800722500
荊門 13800724500
江漢 13800728500
湖南 長沙 13800731500
常德 13800736500
衡陽 13800734500
邵陽 13800739500
嶽陽 13800730500
益陽 13800737500
湘潭 13800732500
株州 13800733500
張家界 13800744500
郴州 13800735500
婁底 13800738500
吉首 13800743500
懷化 13800745500
永州 13800746500
廣東 廣州 13800200500
深圳 13800755500
汕頭 13800754500
韶關 13800751500
清遠 13800763500
潮州 13800768500
揭陽 13800663500
湛江 13800759500
茂名 13800668500
江門 13800750500
東莞 13800769500
河源 13800762500
梅州 13800753500
汕尾 13800660500
佛山 13800757500
雲浮 13800766500
順德 13800765500
肇慶 13800758500
江門 13800750500
陽江 13800662500
珠海 13800756500
中山 13800760500
惠州 13800752500
廣西 南甯 13800771500
柳州 13800772500
桂林 13800773500
梧州 13800774500
玉林 13800775500
百色 13800776500
欽州 13800777500
河池 13800778500
北海 13800779500
防城港 13800770500
海南 海口 13800898500
重慶 重慶 13800230500
四川 成都 13800280500
攀枝花 13800812500
自貢 13800813500
綿陽 13800816500
南充 13800817500
廣安 13800826500
宜賓 13800831500
内江 13800832500
樂山 13800833500
西昌 13800834500
雅安 13800835500
康定 13800836500
馬爾康 13800837500
德陽 13800838500
廣元 13800839500
泸州 13800830500
遂甯 13800825500
巴中 13800827500
達川 13800818500
貴州 貴陽 13800851500
雲南 昆明 13800871500
玉溪 13800877500
曲靖 13800874500
保山 13800875500
思茅 13800879500
楚雄 13800878500
文山 13800876500
麗江 13800888500
個舊 13800873500
大理 13800872500
陝西 西安 13800290500
延安 13800911500
榆林 13800912500
渭南 13800913500
商洛 13800914500
安康 13800915500
漢中 13800916500
寶雞 13800917500
銅川 13800919500
鹹陽 13800910500
甘肅 蘭州 13800931500
白銀 13800943500
臨夏 13800930500
甘南 13800941500
張掖 13800936500
金昌 13800935500
酒泉 13800937500
天水 13800938500
定西 13800932500
平涼 13800933500
慶陽 13800934500
隴南 13800939500
青海 西甯 13800971500
甯夏 銀川 13800951500
新疆 烏魯木齊 13800991500
克拉瑪依 13800990500
石河子 13800992500
奎屯 13800993500
昌吉 13800994500
吐魯番 13800995500
庫爾勒 13800996500
阿克蘇 13800997500
喀什 13800998500
伊甯 13800999500
塔城 13800901500
哈密 13800902500
和田 13800903500
阿勒泰 13800906500
阿圖什 13800908500
博州 13800909500