BENQ23G的彩信發送及編碼格分析
目前,基于GSM/GPRS模塊的無線遠程監控系統大多數采用嵌入式處理器,選用Linux操作系統。本文介紹一種采用Winbond公司的77FA8單片機控制明基的GSM/GPRS模塊BENQ23G發送MMS彩信的方法。該方法成本低、可靠性高,器件選用工業級產品,能夠在較寬溫度范圍內工作,即使在室外較惡劣的環境下也可以使用。
本系統組成如圖1所示。其中,單片機77E58有2個串口,串口O用于與BENQ23G模塊進行通信,控制BENQ23G發送彩信;串口1用于與串口攝像頭(如C328-JPEG模塊)進行通信,控制攝像頭捕獲圖像。外部傳感器報警接口用于連接外部報警傳感器,77E58最小系統收到外部傳感器報警觸發信號后,捕獲照片、封裝MMS彩信,控制BENQ23G模塊向指定的手機或遠程接收設備發送彩信;同時還可以撥打指定電話號碼,將現場聲音傳送過去。MIC及信號放大電路用于采集外部現場聲音并進行放大。
從前面的分析可以看出,本系統充分利用了各個部件的硬件資源,最大限度地降低了硬件成本。本文主要介紹圖1所示的無線遠程監控系統通過中國移動夢網發送彩信時,所使用的傳輸協議命令格式和傳輸數據格式。
1 BENQ23G模塊簡介
BENQ23G是臺灣BenQ公司生產的嵌入TCP/IP協議的GSM/GPRS模塊,在BENQ23A模塊的基礎上增加了M2M(Machine-to―Maehine)功能,可以通過GPRS承載在BENQ23G模塊和因特網TCP/UDP服務器上實現連接。控制設備和BENQ23G模塊之間通過UART串口連接,傳輸命令和數據。
控制設備首先通過UART串口設置網絡連接參數,然后撥號連接GPRS,BENQ23G模塊建立GPRS連接并和指定的因特網TCP/UDP服務器建立Socket連接。如果Socket連接成功,則模塊在控制設備和因特網TCP/UDP服務器之間通過UART串口建立點對點數據連接模式,控制設備可以通過UART串口將數據原封不動地上傳至因特網TCP/UDP服務器,同時可以通過UART串口原封不動地下載因特網TCP/UDP服務器上的數據,而上傳和下載數據的TCP/UDP打包和解包工作由BENQ23G模塊實現。
控制設備在數據模式下通過UART串口發送數據時,如果BENQ23G模塊在規定時間間隔內沒有繼續收到UART串口的數據,就將前面接收的數據進行TCP/UDP打包并發送到服務器。
當BENQ23G模塊通過UART串口連續收到控制模塊發送的3個“+”符號后,將退出點對點數據模式而進入命令模式,可以通過UART串口接收控制設備發送的AT指令。但這時BENQ23G模塊和服務器之間的TCP/UDP協議Socket連接并沒有中斷,控制設備如果想再次進入數據模式上傳數據給服務器,可以鍵入ATO命令實現。
控制設備可以在命令模式下通過鍵入ATH命令來中斷BENQ23G模塊和服務器之間的Socket連接。下面給出一個控制設備和彩信網關服務器連接的例子:
該例子說明如何通過BENQ23G模塊實現和遠程服務器的連接,以及上傳和下載數據。BENQ23G模塊AT指令的詳細說明見參考文獻。
測試MMS組成及編碼格式分析略,詳細的編碼含義見參考文獻。
2 基于BENQ23G發送MMS編碼格式分析
當控制設備需要發送彩信時,首先通過UART串口傳送AT指令完成相應的參數設置(如前面例子所示),再傳送“ATD*97#”指令進行GPRS撥號,并等待BENQ23G模塊完成與服務器之間的Socket連接。當收到BENQ23G模塊發送的響應“Wait Socket Open”時,表明BENQ23G模塊完成了與服務器的連接,并進入數據模式,控制設備可以進行發送彩信操作。
2.1 首先建立會話連接
控制設備發送會話建立連接請求(8字節):
0001 0A OO OO 12 01 10 OO 00
發送數據序列中前4字節“0A 00 00 12”是WTP In―voke PDU。WTP Invoke PDU采用了固定長度格式,其結構如表1所列。
其中,CON=0,PDU Type=0001,GTR=0,TTR=1,RID=0,故第1字節為0A;TID High Byte=00000000,故第2字節為00;TID Low Byte=00000000,故第3字節為00;Version=00,TIDnew=0,U/p=1,RES=00,TCL=10,故第4字節為12。
發送數據序列中的第5到8字節“01 10 O000”是WSP協議數據單元。其中第5字節“01”是WSP會話連接Connect的代碼,第6到8字節是WSP Connect PDU。WSP Connect PDU結構如表2所列。
評論