GPRS数据包压缩难题-求帮助
最近做项目,单片机是用的MSP430F5438A,采集终端数据,然后通过GPRS上传到服务器,数据上传时要求压缩,压缩方式如图片所示。查了一下资料发现,gzip的库在430上根本无法应用,查了不少资料,都讲的是如何应用gzip的库,没有找到如何能让它在430这样的单片机上运行,是我的方向错了?还是……完全蒙逼了,到底要如何实现呢?求帮助啊?求建议……
光这个流程图哪行啊 楼主用的什么方案的gprs模块啊,我用的sim928a 跑压缩算法的话,对内存要求挺高的,一般单片机的内存很难实现的 minilzo,楼主可以去看看,一般来说,压缩所需的内存要被压缩数据的两倍 jasonzhu8888 发表于 2016-12-4 18:41
光这个流程图哪行啊
就给了个这个流程图,我问过他们,人家服务器上是直接调用GZIP的库进行的解压和压缩。要求我这边压缩的数据包他们可以直接解压,并能解压他们发过来的数据包。可是我这单片机上用不成那个库,库说明需要分配最小32kb的窗口,我单片机总共才16k,正在分析库源码,看能不能改一下,在单片机上用。大侠可有什么建议?期待…… 河图洛书 发表于 2016-12-5 09:14
楼主用的什么方案的gprs模块啊,我用的sim928a
我用的是M6310,中移的模块。 lou0908 发表于 2016-12-5 09:36
minilzo,楼主可以去看看,一般来说,压缩所需的内存要被压缩数据的两倍
服务器用的是gzip,我只能去兼容他们的格式。其它格式人家不认可呢…… 估计没戏 1、要么自己写个优化的算法,使得当前cpu可以支持
2、要么换cpu
3、还有一种自己搞个网关,把下位的数据接收后gzip压缩,发送给对方接口。
感觉第三种最合适 数据量小的话压缩没太大意义, 数据多你内存肯定不够 弄个OPENWRT 模块装上,把GPRS交由OPENWRT处理 gzip是UNIX下的一种数据格式。
gzip是在zlib之上,包了一层,在头和尾添加了一些额外的信息。
找到zlib的开源库 移植到你的mcu上。
mcu资源不一定够。。。{:sweat:}{:sweat:}{:sweat:} 最好是后台配合改协议,单片机搞压缩不可能实现的! 换单片机吧
把你的压缩率设为1.
也就是根本不压缩,只是打个gzip格式的包。
我也不太懂哈。我觉得应该可行。 这个要求好奇葩。。。。 xpstudio2011 发表于 2016-12-5 20:26
把你的压缩率设为1.
也就是根本不压缩,只是打个gzip格式的包。
对,手写个正确的但实际完全没压缩的格式就行了。应该不耗你内存,肯定能符合标准。 wangsen 发表于 2016-12-5 10:29
服务器用的是gzip,我只能去兼容他们的格式。其它格式人家不认可呢……
正常http就是自带gzip压缩的,但要你客户端特别说明自已支持gzip才行。普通浏览器肯定都支持了,但你如果只是个小单片机,不支持也没事,服务器会给你不压缩的内容。
这才是正道。
jasonzhu8888 发表于 2016-12-5 11:25
1、要么自己写个优化的算法,使得当前cpu可以支持
2、要么换cpu
3、还有一种自己搞个网关,把下位的数据接 ...
打算试试你说的第一种方法,研究算法中…… 不用想也不用搞了 mcu搞不定的
换个跑嵌入式linux的才是正道,现在成品的百十元可以拿下
页:
[1]