星期四, 9月 22, 2005

GSM/GPRS MODEM 測試

以下參考
GSM Modem SMS操作
手機通訊錄AT Command


AT Command都以AT開頭,以\r\n結尾。
設備回應時也以0x0d,0x0a結尾。
有些設備在回應時會先以0x0d,0x0a開頭,避免前一個command還沒結束。(就像SLIP, PPP一樣)


AT+CREG?
+CREG: 0,1
OK
註冊OK


ATD0937909999;
OK
因為撥號後有加";"號,所以再命令下達後,會回來,不會等待通話完畢。
當對方接聽後,不會有任何message。
對方掛斷後,會有 NO CARRIER


AT+CHFA?
+CHFA: 0 (NORMAL_AUDIO)
這是選擇硬體audio channel的command,module 硬體有兩個audio channel :
0 : NORMAL - 好像是在modem後面,用電話筒的那一個RJ11接頭
1 : AUX - 是用免持 耳mic線的,旁邊的接頭。
要選的話,用comamnd
AT+CHFA=1
選AUX channel。
一般defaul是Normal (0),用這個command選aux channel後,重開機還是會回到normal channel.
NORMAL MODE時,響鈴會從speaker(外接,不是話筒handset的speaker)播出來。
AUX MODE時,響鈴會從耳mic播出。


設定喇叭音量
AT+CLVL= 0 關閉喇叭音量(設為0)
AT+CLVL=100 將音量開最大(設為100)


AT+CPIN=1234
+STC: 0
OK
輸入PIN碼,開機時會用到,要輸入後才能使用SIM card.


有電話撥入時,會顯示
RING
約 每 1 sec 送出一次。


當有電話撥入時,用
ATA;
可以接聽。一定要加";"號。


當有電話撥入時,用
AT+CLCC
會回應caller number
+CLCC: 1,1,4,0,0,"+886939900000",145


列出簡訊,
AT+CMGL=?
以下command依SMS的Mode是TEXT或PDU而有所區分,PDU Mode時
+CMGL: 0,1,2,3,4
這樣用(=?)會列出支援的列出方式
0 : 收到的,未讀的message
1 : 收到的,已讀的message
2 : 儲存的,未送出的message
3 : 儲存的,已送出的message
4 : 所有的message。
所以要讀取(列出)所有的message,要用
AT+CMGL=4
在TEXT MODE時,0,1,2,3,4變成
+CMGL: "REC READ","REC UNREAD","STO SENT","STO UNSENT","ALL"
要讀取所有的message,要用
AT+CMGL="ALL"

就會列出所有收到的messasge內容:

+CMGL : 1,1,,49
07896E0900000000.....<略>

+CMGL : 2,1,,33
079122347E7AC909....<略>


簡訊的模式,收發顯訊有兩種模式:0. PDU, 1: Text. default是PDU Mode.
PDU : Protocol Description Unit.
實際上SMS傳送的格式都是PDU,Text是GSM Modem支援的另一種模式,將AT command輸入的文字轉為PDU格式發出。
AT+CMGF=?
+CMGF : (0-1)
列出支援的模式,Modem回應它支援0,和1模式。
設定使用文字模式(1)
AT+CMGF=1
OK


收到簡訊時,回有
+CMTI: "SM", 2
代表收到SMS,放在"SM"記憶區,index是2
("SM",和2之間會有一個空格,當index是兩位數時,這個空格一樣存在)
+CMTI是Modem傳出的command,沒有user 輸入的格式。(是unsolicited command)


讀取簡訊
AT+CMGR=2
讀取index 2的簡訊,Modem會印出
+CMGR: "REC UNREAD","+886937909999",,"05/09/23",09:52:48+32"
123
OK
第 一行列出SMS的狀態,之後換行<CR&~~SPECIAL_REMOVE! #~~gt;<LF>再來是 message的內容"123".
AT+CMGR command顯示的內容會隨著SMS format (AT+CMGF=?)而不同。
和上面同一個message,在+CMGF=0(pdu mode)時會顯示:
+CMGR: 1,,22
0791589723848098040C918896330975290000509032902584230331D90C
但是在+CMGF=1時,會顯示
+CMGR: "REC READ","+886937975999",,"05/09/23,09:52:48+32"
123


寄簡訊
AT+CMGS=0939909999
>message
然後用Ctrl-Z結束
再TEXT Mode時,message會直接轉成Text,
在PDU Mode時,要follow pdu formate。輸入內碼。


刪除簡訊
AT+CMGD=11
刪除第11筆簡訊


電池電壓
AT+CBC
+CBC: 0,53
第一個數字0代表電源輸入是電池還是外部電源,0是電池
53代表電壓是53% full


變更loacal的baudrate
AT+IPR=9600
將loacl baudrate設為9600
這一項設定在reset後還會保留。


設定回應輸入命令(echo)
ATE0 關閉回應
ATE1 開啟回應
這個command不用加 AT+


選取電話簿
電話簿有很多:SIM card,話機... etc
AT+CPBS=?
+CPBS: ("SM","ON","MC")
SM帶保SIM card
ON代表電話機
選擇SIM card電話簿用
AT+CPBS="SM"


讀取電話簿
AT+CPBR=1,20
列出1到20筆電話簿內容
如果只要讀一筆,就用
AT+CPBR=7
讀取第7筆


寫入電話簿
AT+CPBW=12,"0939909999",129,"XO"
將名叫XO的電話0939909999寫入memory 12的位置
129代表文字編碼,用129就OK了。


播打電話簿的號碼:

ATD>2;
播打現在使用記憶體中第二的位置的號碼

ATD>SM2;
播打SM(SIM)記憶體第二位置的號碼

ATD>"A1"
播打記憶體中名叫A1的電話

沒有留言:

網誌存檔