• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于GS1011M的WIFI圖片傳輸

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

      錢光明++李楓

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

      關鍵詞:WIFI模塊;S格式;Y格式;透明傳輸

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

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

      1 簡單的圖片傳送裝置

      圖1是用GS1011M組成的、簡單的圖像傳送裝置。攝像頭模塊通過SCCB接口接受STM32單片機發(fā)來的命令,由該模塊采集并處理后的圖像數(shù)據(jù)通過8位并行數(shù)據(jù)線傳向STM32單片機,再由單片機的UART接口送往WIFI模塊,傳向網(wǎng)絡。實驗用攝像頭采用OV2640,它與STM32單片機還有一些其它的連接,如系統(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ù)的傳遞過程,尤其是在調試過程中。而該方式的具體實施又有兩類主要格式:

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

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

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

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

      如何使“0x1b”用S格式傳出去?實驗中,我們在發(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”去掉。如此便實現(xiàn)了透明傳輸。為什么選擇“0x22 0x33 0x44”而不采用“0xFF”之類的字符呢?因為“0xff”在JPG文件中作為標志性的字符肯定要出現(xiàn),我們再選它來代替“0x1b”顯然不合適。實際上,在原始圖片數(shù)據(jù)中,出現(xiàn)“0x22 0x33”的概率很低,我們的實驗中從未出現(xiàn)過。

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

      2.2 “自動連接”方式

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

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

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

      3 結束語

      通過以上分析可知:利用“數(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ù)是有限制的。

      參考文獻:

      [1] Gain Span. GS1011M_Datasheet_rev_1_6. 2013.

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

      [3] GainSpan. Serial_to_WiFi_Adapter_Guide_ver_5_14. 2012.

      永宁县| 泗水县| 红桥区| 富蕴县| 珠海市| 山西省| 武隆县| 太和县| 揭西县| 古丈县| 筠连县| 忻州市| 抚远县| 潜山县| 分宜县| 阳江市| 石嘴山市| 新密市| 鸡东县| 柳林县| 泽普县| 习水县| 南丰县| 昌黎县| 松溪县| 房产| 淮北市| 凭祥市| 铁岭市| 四川省| 吴堡县| 花莲市| 靖宇县| 融水| 武城县| 阿城市| 嵩明县| 原平市| 海伦市| 洛宁县| 三河市|