<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > BENQ23G的彩信發(fā)送及編碼格分析

          BENQ23G的彩信發(fā)送及編碼格分析

          作者: 時(shí)間:2009-02-25 來(lái)源:網(wǎng)絡(luò) 收藏
          引 言
          目前,基于GSM/GPRS模塊的無(wú)線遠(yuǎn)程監(jiān)控系統(tǒng)大多數(shù)采用嵌入式處理器,選用Linux操作系統(tǒng)。本文介紹一種采用Winbond公司的77FA8單片機(jī)控制明基的GSM/GPRS模塊MMS的方法。該方法成本低、可靠性高,器件選用工業(yè)級(jí)產(chǎn)品,能夠在較寬溫度范圍內(nèi)工作,即使在室外較惡劣的環(huán)境下也可以使用。
          本系統(tǒng)組成如圖1所示。其中,單片機(jī)77E58有2個(gè)串口,串口O用于與模塊進(jìn)行通信,控制;串口1用于與串口攝像頭(如C328-JPEG模塊)進(jìn)行通信,控制攝像頭捕獲圖像。外部傳感器報(bào)警接口用于連接外部報(bào)警傳感器,77E58最小系統(tǒng)收到外部傳感器報(bào)警觸發(fā)信號(hào)后,捕獲照片、封裝MMS,控制BENQ23G模塊向指定的手機(jī)或遠(yuǎn)程接收設(shè)備彩信;同時(shí)還可以撥打指定電話(huà)號(hào)碼,將現(xiàn)場(chǎng)聲音傳送過(guò)去。MIC及信號(hào)放大電路用于采集外部現(xiàn)場(chǎng)聲音并進(jìn)行放大。

          本文引用地址:http://www.ex-cimer.com/article/167061.htm

          從前面的可以看出,本系統(tǒng)充分利用了各個(gè)部件的硬件資源,最大限度地降低了硬件成本。本文主要介紹圖1所示的無(wú)線遠(yuǎn)程監(jiān)控系統(tǒng)通過(guò)中國(guó)移動(dòng)夢(mèng)網(wǎng)發(fā)送彩信時(shí),所使用的傳輸協(xié)議命令格式和傳輸數(shù)據(jù)格式。

          1 BENQ23G模塊簡(jiǎn)介
          BENQ23G是臺(tái)灣BenQ公司生產(chǎn)的嵌入TCP/IP協(xié)議的GSM/GPRS模塊,在BENQ23A模塊的基礎(chǔ)上增加了M2M(Machine-to―Maehine)功能,可以通過(guò)GPRS承載在BENQ23G模塊和因特網(wǎng)TCP/UDP服務(wù)器上實(shí)現(xiàn)連接。控制設(shè)備和BENQ23G模塊之間通過(guò)UART串口連接,傳輸命令和數(shù)據(jù)。
          控制設(shè)備首先通過(guò)UART串口設(shè)置網(wǎng)絡(luò)連接參數(shù),然后撥號(hào)連接GPRS,BENQ23G模塊建立GPRS連接并和指定的因特網(wǎng)TCP/UDP服務(wù)器建立Socket連接。如果Socket連接成功,則模塊在控制設(shè)備和因特網(wǎng)TCP/UDP服務(wù)器之間通過(guò)UART串口建立點(diǎn)對(duì)點(diǎn)數(shù)據(jù)連接模式,控制設(shè)備可以通過(guò)UART串口將數(shù)據(jù)原封不動(dòng)地上傳至因特網(wǎng)TCP/UDP服務(wù)器,同時(shí)可以通過(guò)UART串口原封不動(dòng)地下載因特網(wǎng)TCP/UDP服務(wù)器上的數(shù)據(jù),而上傳和下載數(shù)據(jù)的TCP/UDP打包和解包工作由BENQ23G模塊實(shí)現(xiàn)。
          控制設(shè)備在數(shù)據(jù)模式下通過(guò)UART串口發(fā)送數(shù)據(jù)時(shí),如果BENQ23G模塊在規(guī)定時(shí)間間隔內(nèi)沒(méi)有繼續(xù)收到UART串口的數(shù)據(jù),就將前面接收的數(shù)據(jù)進(jìn)行TCP/UDP打包并發(fā)送到服務(wù)器。
          當(dāng)BENQ23G模塊通過(guò)UART串口連續(xù)收到控制模塊發(fā)送的3個(gè)“+”符號(hào)后,將退出點(diǎn)對(duì)點(diǎn)數(shù)據(jù)模式而進(jìn)入命令模式,可以通過(guò)UART串口接收控制設(shè)備發(fā)送的AT指令。但這時(shí)BENQ23G模塊和服務(wù)器之間的TCP/UDP協(xié)議Socket連接并沒(méi)有中斷,控制設(shè)備如果想再次進(jìn)入數(shù)據(jù)模式上傳數(shù)據(jù)給服務(wù)器,可以鍵入ATO命令實(shí)現(xiàn)。
          控制設(shè)備可以在命令模式下通過(guò)鍵入ATH命令來(lái)中斷BENQ23G模塊和服務(wù)器之間的Socket連接。下面給出一個(gè)控制設(shè)備和彩信網(wǎng)關(guān)服務(wù)器連接的例子:


          該例子說(shuō)明如何通過(guò)BENQ23G模塊實(shí)現(xiàn)和遠(yuǎn)程服務(wù)器的連接,以及上傳和下載數(shù)據(jù)。BENQ23G模塊AT指令的詳細(xì)說(shuō)明見(jiàn)參考文獻(xiàn)。
          測(cè)試MMS組成及格式略,詳細(xì)的含義見(jiàn)參考文獻(xiàn)。

          2 基于BENQ23G發(fā)送MMS格式
          當(dāng)控制設(shè)備需要發(fā)送彩信時(shí),首先通過(guò)UART串口傳送AT指令完成相應(yīng)的參數(shù)設(shè)置(如前面例子所示),再傳送“ATD*97#”指令進(jìn)行GPRS撥號(hào),并等待BENQ23G模塊完成與服務(wù)器之間的Socket連接。當(dāng)收到BENQ23G模塊發(fā)送的響應(yīng)“Wait Socket Open”時(shí),表明BENQ23G模塊完成了與服務(wù)器的連接,并進(jìn)入數(shù)據(jù)模式,控制設(shè)備可以進(jìn)行發(fā)送彩信操作。
          2.1 首先建立會(huì)話(huà)連接
          控制設(shè)備發(fā)送會(huì)話(huà)建立連接請(qǐng)求(8字節(jié)):
          0001 0A OO OO 12 01 10 OO 00
          發(fā)送數(shù)據(jù)序列中前4字節(jié)“0A 00 00 12”是WTP In―voke PDU。WTP Invoke PDU采用了固定長(zhǎng)度格式,其結(jié)構(gòu)如表1所列。

          其中,CON=0,PDU Type=0001,GTR=0,TTR=1,RID=0,故第1字節(jié)為0A;TID High Byte=00000000,故第2字節(jié)為00;TID Low Byte=00000000,故第3字節(jié)為00;Version=00,TIDnew=0,U/p=1,RES=00,TCL=10,故第4字節(jié)為12。
          發(fā)送數(shù)據(jù)序列中的第5到8字節(jié)“01 10 O000”是WSP協(xié)議數(shù)據(jù)單元。其中第5字節(jié)“01”是WSP會(huì)話(huà)連接Connect的代碼,第6到8字節(jié)是WSP Connect PDU。WSP Connect PDU結(jié)構(gòu)如表2所列。


          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();