首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

无线模块收发死掉

无线模块收发死掉

大家有没有碰到过无线模块不停的收发,过一段时间后会出现无线模块会发送失败或者是接收不到的现象。我用的是Z-Stack的serial重新改写收发程序,现在用coord像router发数据,router没收到一个数据就会再回一个数据给coord。一般情况下,发了10-20万个字节后,会出现coord发送失败,而router接受不到数据,有时有可能是coord死掉,有时是router死掉,只要复位其中一个就会正常收发。我用调试跟踪过,程序本身并没有死,还是在执行。估计是应用层程序影响到无线层这块了。大家有没有什么解决方法啊!
abc
现在我串口发数据的间隔是1s,但是发送一段时间就会死掉。我是一次发57个字节的,是不是与应用层全局变量设的太多有关啊?
abc
对,现在是coord到router点对点的。串口驱动这里已经限制了最多是77个字节进来。每发一个包,我都等ACK回来的,ACK成功在打开串口,从串口取数据的来发的,否则不取的。时间间隔长短好像没什么作用,都是发一段时间就会死掉的。
abc
应该都及时释放内存的。变量也已经减掉很多了。可还是会在发了10-20万个字节时死掉。还有想问一下,信标模式和非信标模式有什么区别啊?就是有什么不同的现象?多谢了。
abc
哦,是这样啊,我没有用信标模式,无线板子是程序是一直在执行的,也没用过PRWLIB。像这样的死机现象,有没有通过软件来控制MC13192这个射频芯片复位的方法啊?我想如果经常这样死机的话,只有定时复位无线收发的芯片了!
abc
我现在按原来的最初的程序,发净荷77个字节,发到22万个字节时,一直发送失败,于是我就等了2分钟,然后再发,竟然又通了。这样发到55万字节,64万字节,90万字节都出现过这个现象。但是都没有按过复位,说明程序工作都正常的,那为什么会要等一段时间才会发通呢?真是奇怪。
abc
现在是coord向router发送数据,通过短地址直接发的,77个字节每1.2秒。如果发送失败,会从串口返回一个值,当发到22万字节的时候就不停的发送失败,然后我就暂停不发了。要等2到5分钟左右的时间,再发,又发送成功了。如果mac层有重发的话,我怎么可以知道它重发成功,或者已经重发了3次失败了呢,这样我应用层就可以控制了。
abc
感谢大家的解答!“z-stack默认的router poll的时间是1秒”哪里可以看出来。我现在的处理就是要等收到ACK成功后,在打开串口取数据的MT_SerialFlowControl( ZAPP_PORT, APP_FLOW_ON ); 失败的话要等3秒才打开,如果buffer里数据溢出就清掉的。所以我觉得发数据的间隔应该差不的了。
abc
返回列表