国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于GS1011M的WIFI圖片傳輸

2015-06-24 12:04:14錢光明李楓
電腦知識與技術(shù) 2015年11期

錢光明++李楓

摘要:用STM32單片機(jī)+WIFI模塊+攝像頭可以組成一個簡單、便宜且低功耗的現(xiàn)場裝置,用于網(wǎng)絡(luò)遠(yuǎn)程監(jiān)控。該文基于GainSpan公司推出的低功耗WIFI模塊GS1011M,主要研究傳送圖片數(shù)據(jù)時頗為值得注意的格式問題,如果處理不好,易出現(xiàn)接收圖片時好時壞或嚴(yán)重失真等現(xiàn)象。文章總結(jié)了GS1011M的幾種主要數(shù)傳方式,研究了圖片傳送時的相關(guān)細(xì)節(jié),提出了一種透明傳輸方案。

關(guān)鍵詞:WIFI模塊;S格式;Y格式;透明傳輸

中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2015)11-0049-02

在當(dāng)今的無線網(wǎng)絡(luò)應(yīng)用中,WIFI為越來越多的人所熟悉。人們在感嘆WIFI技術(shù)帶來方便的同時,也在不斷地挖掘著它的潛力,如何將該技術(shù)用于網(wǎng)絡(luò)遠(yuǎn)程監(jiān)控就是近年來許多人關(guān)心的問題,而低功耗網(wǎng)絡(luò)監(jiān)控更是有著特別的吸引力。GS1011M是GainSpan公司推出的WIFI模塊,該模塊給用戶提供UART或SPI接口,用戶通過簡單的AT指令即可進(jìn)行網(wǎng)絡(luò)連接和數(shù)據(jù)傳輸[1]。尤其要指出的是:GS1011M模塊有著優(yōu)良的低功耗性能,其待機(jī)電流典型值只有7μA,是低功耗WIFI應(yīng)用的不錯選擇。如果將GS1011M用于簡單的傳感器數(shù)據(jù)傳送(如溫度、位置等測量),有些文獻(xiàn)可供參考[2]。而本文要研究的是用GS1011M通過WIFI進(jìn)行圖像傳送這一問題。

1 簡單的圖片傳送裝置

圖1是用GS1011M組成的、簡單的圖像傳送裝置。攝像頭模塊通過SCCB接口接受STM32單片機(jī)發(fā)來的命令,由該模塊采集并處理后的圖像數(shù)據(jù)通過8位并行數(shù)據(jù)線傳向STM32單片機(jī),再由單片機(jī)的UART接口送往WIFI模塊,傳向網(wǎng)絡(luò)。實(shí)驗用攝像頭采用OV2640,它與STM32單片機(jī)還有一些其它的連接,如系統(tǒng)時鐘輸入XVCLK、場同步輸出VSYNC等等。

圖1 簡單的圖像傳送裝置。

2 GS1011M的圖像數(shù)據(jù)傳送方式

“數(shù)據(jù)處理”(Data Processing)方式和“自動連接”(Auto Connection Operation)方式是GS1011M的兩個主要數(shù)據(jù)傳輸方式。自然可用于圖像數(shù)據(jù)傳送。

2.1 “數(shù)據(jù)處理”方式

采用“數(shù)據(jù)處理”方式,可以比較好地把握整個數(shù)據(jù)的傳遞過程,尤其是在調(diào)試過程中。而該方式的具體實(shí)施又有兩類主要格式:

先看第一種格式。數(shù)據(jù)包的開頭和結(jié)尾均出現(xiàn),對應(yīng)ASCII碼是“0x1b”。例如,“S0AE”表示通過0號連接發(fā)出字母A,S后的0表示連接號。該格式的細(xì)節(jié)還可有一些變化[3]。為敘述方便,以下將這一傳輸格式稱為S格式;

如果采用S格式,“0x1b”(在串口精靈上顯示為短左箭頭)將不會被GS1011傳遞,數(shù)據(jù)中若包含該特殊字符,應(yīng)心中有數(shù),這時必須采用透明傳輸?shù)霓k法。這類似于網(wǎng)絡(luò)教材中面向字節(jié)的透明傳輸原理。例如,圖2是一個用OV2640得到的JPG彩條圖片文件的部分?jǐn)?shù)據(jù),其中就包含“0x1b”。如果采用S格式直接對圖2所示文件傳輸,因為丟失“0x1b”,彩條圖片傳出后顯示的結(jié)果如圖3所示,顯然已經(jīng)嚴(yán)重失真。

圖2 一個彩條JPG圖片的部分?jǐn)?shù)據(jù)

圖3 丟失0x1b后的彩條圖片。320*240分辨率

如何使“0x1b”用S格式傳出去?實(shí)驗中,我們在發(fā)送端采用一串特殊字符“0x22 0x33 0x44”來代替“0x1b”,在接收端再將“0x22 0x33 0x44”換成“0x1b”。圖片數(shù)據(jù)中一些地方會不會本身就含有“0x22 0x33 0x44”呢?如果有,我們的處理辦法是:在發(fā)送端只要出現(xiàn)“0x22 0x33”,就馬上插入一個“0x00”;在接收端只要出現(xiàn)“0x22 0x33”,就將緊隨其后的“0x00”去掉。如此便實(shí)現(xiàn)了透明傳輸。為什么選擇“0x22 0x33 0x44”而不采用“0xFF”之類的字符呢?因為“0xff”在JPG文件中作為標(biāo)志性的字符肯定要出現(xiàn),我們再選它來代替“0x1b”顯然不合適。實(shí)際上,在原始圖片數(shù)據(jù)中,出現(xiàn)“0x22 0x33”的概率很低,我們的實(shí)驗中從未出現(xiàn)過。

再看第二種格式。數(shù)據(jù)包以開頭,接下來要給出“對方的IP地址”、“端口號”及“需要發(fā)送的字節(jié)數(shù)”等信息,然后按該字節(jié)數(shù)發(fā)出數(shù)據(jù)內(nèi)容即可,無需以結(jié)尾。例如,“Y0192.168.1.100:8080:0010”表示通過0號連接,向“192.168.1.100”的8080號端口發(fā)出10(十進(jìn)制)個數(shù)據(jù),數(shù)據(jù)內(nèi)容要緊隨其后。該格式的細(xì)節(jié)也還可有一些變化[1]。為敘述方便,以下將這一傳輸格式稱為Y格式。Y格式本質(zhì)上顯然是一種字節(jié)計數(shù)方法。內(nèi)容中可以包含任何十六進(jìn)制數(shù),包括“0x1b”,任何數(shù)都會被傳遞,不要作特殊處理。發(fā)送端和接收端都無需進(jìn)行透明傳輸?shù)木幊?。但是,采用Y格式時,一次可發(fā)送的最大字節(jié)數(shù)通常限制為1400或1500。如果一個圖片數(shù)據(jù)超過這一最大數(shù),將要分多次打包傳輸。例如,實(shí)驗中我們傳輸10K大小的圖片時,每次發(fā)送1024個字節(jié),分10次完成。

2.2 “自動連接”方式

有別于“數(shù)據(jù)處理”方式,GS1011M模塊進(jìn)入“自動連接”方式后,起到的完全是一個透明傳遞的橋梁(pass-through)作用。該方式中,GS1011M不再接收AT命令,也不會把當(dāng)作一次數(shù)據(jù)傳輸?shù)拈_頭和結(jié)尾。只要預(yù)先作好綁定和設(shè)置,該模塊就像一根電纜(cable replacement),要它傳什么它就傳什么,也不向圖1中的STM32單片機(jī)反饋狀態(tài)信息。

但是,如果數(shù)據(jù)傳輸時連續(xù)出現(xiàn)3個“+”,然后停頓1秒鐘(不傳遞任何字符),GS1011M模塊將退出“自動連接”方式。符號“+”對應(yīng)的十六進(jìn)制是“0x2b”。圖像數(shù)據(jù)中有沒有可能連續(xù)出現(xiàn)3個“0x2b”呢?有。圖4是用OV2640采集的一個YUV422文件的片段,其中包含了連續(xù)4個“0x2b”的情況。那么,有沒有可能在連續(xù)3個以上的“0x2b”后,出現(xiàn)1秒鐘的數(shù)據(jù)傳輸停頓呢?雖然概率低,但不是沒有可能,這一點(diǎn)應(yīng)該引起設(shè)計者的注意。一旦出現(xiàn),不管預(yù)定的數(shù)據(jù)是否傳輸完畢,GS1011M就不再是要它傳什么就會傳什么的狀態(tài)了。

圖4 包含了連續(xù)4個“+”的一個YUV422文件部分?jǐn)?shù)據(jù)

3 結(jié)束語

通過以上分析可知:利用“數(shù)據(jù)處理”方式中的S格式傳輸數(shù)據(jù)時,需要注意特殊數(shù)據(jù)“0x1b”;采用“自動連接”方式時,則需要注意特殊數(shù)據(jù)串“0x2b 0x2b 0x2b”再加1秒鐘的停頓。因為圖像數(shù)據(jù)格式多,內(nèi)容豐富,每一個數(shù)據(jù)字節(jié)可能是從“0x00”到“0xff”中的任何一個,因此,碰到這些特殊數(shù)據(jù)是可能的。而如果采用“數(shù)據(jù)處理”方式中的Y格式的話,就可以免去這種特殊數(shù)據(jù)帶來的煩惱。只不過要注意用Y格式時,每次可以傳遞的字節(jié)數(shù)是有限制的。

參考文獻(xiàn):

[1] Gain Span. GS1011M_Datasheet_rev_1_6. 2013.

[2] 張耀,丁恩杰,史巖巖,等.礦山人員狀態(tài)感知節(jié)點(diǎn)的研究與設(shè)計[J].計算機(jī)測量與控制, 2012,20(12): 3302-3305.

[3] GainSpan. Serial_to_WiFi_Adapter_Guide_ver_5_14. 2012.

樟树市| 博乐市| 洪湖市| 高雄县| 建水县| 鹿邑县| 来安县| 永年县| 尼木县| 克东县| 酉阳| 汝城县| 凤庆县| 松江区| 确山县| 茌平县| 大埔县| 桑日县| 湟源县| 扎赉特旗| 大安市| 濉溪县| 广宁县| 衡南县| 乐安县| 肇源县| 澄江县| 安义县| 阜新市| 怀仁县| 肃南| 湖口县| 淳化县| 炉霍县| 北安市| 海原县| 长垣县| 尉犁县| 武清区| 巴彦淖尔市| 穆棱市|