- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于GS1011MWIFI图片传输
基于GS1011MWIFI图片传输
摘要:用STM32单片机+WIFI模块+摄像头可以组成一个简单、便宜且低功耗的现场装置,用于网络远程监控。该文基于GainSpan公司推出的低功耗WIFI模块GS1011M,主要研究传送图片数据时颇为值得注意的格式问题,如果处理不好,易出现接收图片时好时坏或严重失真等现象。文章总结了GS1011M的几种主要数传方式,研究了图片传送时的相关细节,提出了一种透明传输方案。
关键词:WIFI模块;S格式;Y格式;透明传输
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)11-0049-02
在当今的无线网络应用中,WIFI为越来越多的人所熟悉。人们在感叹WIFI技术带来方便的同时,也在不断地挖掘着它的潜力,如何将该技术用于网络远程监控就是近年来许多人关心的问题,而低功耗网络监控更是有着特别的吸引力。GS1011M是GainSpan公司推出的WIFI模块,该模块给用户提供UART或SPI接口,用户通过简单的AT指令即可进行网络连接和数据传输[1]。尤其要指出的是:GS1011M模块有着优良的低功耗性能,其待机电流典型值只有7μA,是低功耗WIFI应用的不错选择。如果将GS1011M用于简单的传感器数据传送(如温度、位置等测量),有些文献可供参考[2]。而本文要研究的是用GS1011M通过WIFI进行图像传送这一问题。
1 简单的图片传送装置
图1是用GS1011M组成的、简单的图像传送装置。摄像头模块通过SCCB接口接受STM32单片机发来的命令,由该模块采集并处理后的图像数据通过8位并行数据线传向STM32单片机,再由单片机的UART接口送往WIFI模块,传向网络。实验用摄像头采用OV2640,它与STM32单片机还有一些其它的连接,如系统时钟输入XVCLK、场同步输出VSYNC等等。
图1 简单的图像传送装置。
2 GS1011M的图像数据传送方式
“数据处理”(Data Processing)方式和“自动连接”(Auto Connection Operation)方式是GS1011M的两个主要数据传输方式。自然可用于图像数据传送。
2.1 “数据处理”方式
采用“数据处理”方式,可以比较好地把握整个数据的传递过程,尤其是在调试过程中。而该方式的具体实施又有两类主要格式:
先看第一种格式。数据包的开头和结尾均出现,对应ASCII码是“0x1b”。例如,“S0AE”表示通过0号连接发出字母A,S后的0表示连接号。该格式的细节还可有一些变化[3]。为叙述方便,以下将这一传输格式称为S格式;
如果采用S格式,“0x1b”(在串口精灵上显示为短左箭头)将不会被GS1011传递,数据中若包含该特殊字符,应心中有数,这时必须采用透明传输的办法。这类似于网络教材中面向字节的透明传输原理。例如,图2是一个用OV2640得到的JPG彩条图片文件的部分数据,其中就包含“0x1b”。如果采用S格式直接对图2所示文件传输,因为丢失“0x1b”,彩条图片传出后显示的结果如图3所示,显然已经严重失真。
图2 一个彩条JPG图片的部分数据
图3 丢失0x1b后的彩条图片。320*240分辨率
如何使“0x1b”用S格式传出去?实验中,我们在发送端采用一串特殊字符“0x22 0x33 0x44”来代替“0x1b”,在接收端再将“0x22 0x33 0x44”换成“0x1b”。图片数据中一些地方会不会本身就含有“0x22 0x33 0x44”呢?如果有,我们的处理办法是:在发送端只要出现“0x22 0x33”,就马上插入一个“0x00”;在接收端只要出现“0x22 0x33”,就将紧随其后的“0x00”去掉。如此便实现了透明传输。为什么选择“0x22 0x33 0x44”而不采用“0xFF”之类的字符呢?因为“0xff”在JPG文件中作为标志性的字符肯定要出现,我们再选它来代替“0x1b”显然不合适。实际上,在原始图片数据中,出现“0x22 0x33”的概率很低,我们的实验中从未出现过。
再看第二种格式。数据包以开头,接下来要给出“对方的IP地址”、“端口号”及“需要发送的字节数”等信息,然后按该字节数发出数据内容即可,无需以结尾。例如,“Y0192.168.1.100:8080:0010”表示通过0号连接,向“192.168.1.100”的8080号端口发出10(十进制)个数据,数据内容要紧随其后。该格式的细节也还可有一些变化[1]。为叙述方便,以下将这一传输格式称为Y格式。Y格式本质上显然是一种字节计数方法。内容中可以包含任何十六进制数,包括“0x1b”,任何数都会被
原创力文档


文档评论(0)