求助:无线模块和GPRS的通信

[复制链接]
 楼主| tiger84 发表于 2007-9-8 16:47 | 显示全部楼层 |阅读模式
单片机用的是lpc2106,无线模块是CC1100,GPRS模块是MC39i。<br /><br />无线模块和GPRS模块都有成熟的程序,直接拿着用就可以了。<br /><br />我需要做的就是把无线模块的数据----》GPRS模块;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GPRS模块的数据----》无线模块。<br /><br />无线模块和GPRS模块在该MCU上单独使用,也都一切正常。<br /><br />当我把无线模块和GPRS模块同时开时,出现的问题就是接收无线模块的数据总是会丢失。<br /><br />原因也很清楚,收到无线模块的数据,就通过GPRS发出去,当用GPRS发数据时,无线模块仍然在接收数据,但此时,GPRS模块占用着CPU,无线模块数据就丢失了。<br /><br />也曾想收完整个一包无线数据后,再通过GPRS发送,但是一包数据可能达到7.2K,在lpc2106里面好像开不了这么大的缓存区。<br /><br />各位指点一下,谢谢。<br /><br />
chunyang 发表于 2007-9-8 21:52 | 显示全部楼层

只能选择合适的MCU或扩展缓冲存储器

  
 楼主| tiger84 发表于 2007-9-9 10:18 | 显示全部楼层

chunyang兄指教

板子要改的话,比较麻烦啊。<br /><br />有可能是我的思路本来就是错误的,<br /><br />我所要的目标就是一个中继,<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;中继的无线模块收到数据后,把数据通过GPRS模块转发到服务器,<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;服务器应答后,<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;再把应答数据通过GPRS发给中继的无线模块,无线模块再转发出去。<br /><br />chunyang兄有什么好的建议没?<br />
chunyang 发表于 2007-9-9 13:16 | 显示全部楼层

关键是你的转发数据量与转发速率的关系

对中继而言,要想数据不拥塞,要求发送端的速率必须大于等于接收端的速率,而双向的话,唯一的解就是“等于”了,但对于GPRS和无线数传而言,这是无论如何也做不到的,所以必须引入缓冲。缓冲可以由你的系统提供,也可以由模块提供,当然这要求模块能够支持才行。
 楼主| tiger84 发表于 2007-9-9 14:12 | 显示全部楼层

谢谢chunyang兄

每次chunyang兄的回答都让小弟受益匪浅,再次感谢。<br /><br />问题已经解决了,就是在LPC2106里开了个大的缓冲区。<br /><br />很惭愧,以前开不了这么大的缓冲区,是我没有设置好堆栈的大小。
oudi 发表于 2007-9-11 19:33 | 显示全部楼层

是不是这个原因?

你的无线模块不能连续传送大文件?
 楼主| tiger84 发表于 2007-9-11 22:26 | 显示全部楼层

恩,无线模块一次只能发送62个字节

上述的问题已经解决了,但是新的问题又出现了。<br /><br /><br /><br />有时候GPRS传输的数据传输会延时,程序处理的过程不会导致这个GPRS数据延时,会不会是网络的问题,或者PPP协议有问题(所选MC39I不带协议栈,PPP协议是移植的)。
chunyang 发表于 2007-9-12 11:02 | 显示全部楼层

GPRS传输有延迟是正常的,跟网络繁忙度有关

所以才需要足够缓存啊
winloop 发表于 2007-9-13 17:07 | 显示全部楼层

肯定是网络的问题

但是gprs的上行数据丢不丢失?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

862

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部