天天看點

GSM短信發送與電話等

一、英文短信

發:AT

收:OK

發:AT+CMGF=1 

收:OK

發:AT+CMGS="+8615083111880"

收:>

發:data       //data 為發送内容(enter 後以ctrl+z(0x1A)結束)

收:+CMGS: 54 OK

如果不成功,出現+CMS ERROR: 302 錯誤。再次發送AT+CMGF=1,AT+CMGS="+8615083111880"。出現>,然後輸入短信内容

二、中文PDU短信

我用一個例子說明整個過程~

短信中心号碼可以百度

北京移動 +8613800100500 北京聯通 +8613010112500  
上海移動 +8613800210500 上海聯通 +8613010314500  
天津移動 +8613800220500 天津聯通 +8613010130500  
重慶移動 +8613800230500 重慶聯通 +8613010831500        

    短信中心:+8613800100500

    收信号碼:+8613401041516

    短信内容:我愛聽評書

第一步——格式化短信中心号碼

1 - 要去掉“+”号,然後看看長度要是奇數的話就在末尾追加一個“F”。

    +8613800200500 >>>> 8613800100500F

2 - 将奇數位和偶數位交換位置。

    8613800100500F >>>> 683108100005F0

3 - 在前面加上“91”,是國際化的意思。

    683108100005F0 >>>> 91683108100005F0

4 - 最後算一算它有多長了,把長度除于2,再把結果轉換為2位的16進制數,加在最前面。

    91683108100005F0長16 16/2=8 8的16進制“08” 一定要注意是2位

    91683108100005F0 >>>> 0891683108100005F0

短信中心号碼就處理完了,下幾一步有類似的算法,現在我感覺就像做菜一樣……

第二步——格式化收信号碼

1 - 要去掉“+”号,然後看看長度要是奇數的話就在末尾追加一個“F”。

    +8613401041516 >>>> 8613401041516F

2 - 将奇數位和偶數位交換位置。

    8613401041516F >>>> 683104011415F6

第三步——格式化發送内容

1 - 把字元串轉換為Unicode格式。(轉換函數我寫過了,直接拿去用好了)

    我愛聽評書 >>>> 62117231542C8BC44E66

2 - 把串Unicode碼的長度除于2,再把結果轉換為2位的16進制數,加在最前面。

    62117231542C8BC44E66長20 20/2=10 10的16進制“0A”

    62117231542C8BC44E66 >>>> 0A62117231542C8BC44E66

先看看我們都準備什麼了,再繼續~

    格式化後的短信中心:0891683108100005F0

    格式化後的收信号碼:683104011415F6

    格式化後的發送内容:0A62117231542C8BC44E66

第四步——組合處理

1 - 算一下收信号碼的長度,不包括“+”号。這個收信号碼指的是+8613401041516,而不是683104011415F6。

    +8613401041516 >>>> 8613401041516 長度為“OD”(2位16進制數表示)

2 - 在長度前後分别加“1100”。

    OD >>>> 1100OD

3 - 如果收信号碼是手機的話就在後面追加“91”,如果是小靈通的話就要追加“81”。

    +8613401041516是手機号碼是以加“91”

    11000D >>>> 11000D91

4 - 11000D91 + 格式化後的收信号碼 + “000800” + 格式化後的發送内容

    11000D91 >>>> 11000D91683104011415F60008000A62117231542C8BC44E66

5 - 計算上面那一大字元串的長度除于2,10進制表示。

    11000D91683104011415F6008000A62117231542C8BC44E66長50 50/2=25

嗯,咱再看看手裡都有啥了~

    格式化後的短信中心:0891683108100005F0

    實際的發送内容:11000D91683104011415F60008000A62117231542C8BC44E66

    發送内容的長度:25

都準備好了我們可以發短信了 ^_^

最後一步——通過AT指令發送PDU短信

    AT+CMGF=0 <Enter> (告訴它你要發的是PDU類的短信)

    OK (這是它傳回的它說:“我已經準備好了”)

    AT+CMGS=25 <Enter> (告訴它你要發的實際長度)

    >0891683108100005F011000D91683104011415F60008000A62117231542C8BC44E66 <Ctrl+Z> (看到它傳回“>” 在後面輸入格式化的短信中心+實際的發送内容最後按Ctrl+Z發送)

如果最後傳回不是“ERROR”,那就是發送成功咯~!

三、撥打電話

1、AT指令打電話,注意在撥的号碼後面有個分号;

atd10086;

OK

2、如果有電話到來時,則是序列槽上将收到RING字元串,這時我們可以使用ATA指令摘機,如果不想接聽,可以使用ATH挂斷;

 但是我沒有接到RING。

四、AT常用指令

at

OK

1,  查子產品制造商:

at+cgmi

ZTE INCORPORATED

OK

2,  查GPRS子產品型号:

at+cgmm

MF626

OK

3,  查子產品版本:

at+cgmr

BD_TMOP673M3V1.0.1B07

OK

4,  查SIM卡是否在位:

at+cpin?

+CPIN: READY

OK

5,查GPRS子產品信号強度,其中”,”前的數字為信号強度,如下面示例中的12為信号強度。

at+csq

+CSQ: 12,99

OK

若信号強度為99,則無效。我這裡信号強度一般在20左右。

6,查SIM卡是否注冊上網絡,其中”,”後的值為SIM卡的注冊狀态,如下面示例中的1.

OK

at+creg?

+CREG: 0,5

OK

如果狀态值為0,表示未注冊;如果為1表示本地号碼注冊上;如果為2,表示正在搜尋營運商注冊,但沒注冊上;3表示拒絕注冊;4,未知狀态; 5, 漫遊号碼注冊上。

7,查SIM卡營運商,如下面顯示的”CHN-CUGSM”為中國聯通的号碼:

at+cops?

+COPS: 0,0,"China Mobile Communication Corp.",0

OK

在UC864E子產品上,使用AT+COPS?查詢,則聯通的号碼将顯示為”cmnet”,但在GTM900B/C, SIM5215上顯示的是”CHN-CUGSM”. 中國移動的則為”China Mobile”,在現實的時候也有一些差別,例如在UC864E上中國移動顯示為” China Mobile”,當中隻有一個空格;而在GTM900B上則顯示” China   Mobile”,當中有兩個空格。但是這上面是China Mobile Communication Corp.

8,短信相關指令:

設定短信格式為Text模式:

AT+CMGF=1  

OK

設定短信格式為PDU模式:

AT+CMGF=0

OK