重复发帖!一个帖子发了马上一个星期了 没有任何回复!
使用情况描述:
一个协调器 一个终端 协调器采用电源适配器供电,终端采用电池供电
终端采用 halSleep(1000); 进入睡眠,睡眠结束后 工作20ms的时间 再进入睡眠 对终端进入睡眠的次数计数,每睡眠10次 则发送一次数据给协调器
如果终端发现 zigbee网络断开了,睡眠时间则改为5s 即 halSleep(5000); 5s睡眠结束 后,调用 ZDApp_StartJoiningCycle(); 寻找网络!此时开始计时3s,如果3s时间到了没 有加入到zigbee网络中 则调用ZDApp_StopJoiningCycle(); 停止网络搜索。 再次进入5s 钟睡眠 如此反复操作5次,如果5次都不能正确加入到zigbee网络 则睡眠时间会修改为1分 钟,每一分钟 寻找网络3s (PS.改成1分钟 是为了让电池能用的久一点)
问题: 使用中发现 当终端发现断网的时候,使用ZDApp_StartJoiningCycle来寻找网络 经常出现 加入网络失败的情况, 5s睡眠+3s寻找网络的机制 重复操作5次都不能成功 在进入到 1Min 睡眠 + 3s寻找网络的时候 最终能够加入到网络中 但是这个时间会比较久
导致上述问题的主要原因是什么啊?是我哪里操作出错了么
希望得到ti的高手指点一下啊!
在z-stack协议栈里面,休眠时间多少,不需要自己调用hal_sleep函数的,系统自己调用的。 自己调用的话,有可能会影响其他的状态机。
Hi VV:
如果不使用hal_sleep函数 怎么确定休眠了多少时间呢?终端在休眠的时候,如果有控制命令下来 怎么能立即响应控制命令呢 ?
用osal_start_timerEx函数,只要节点入了网,无其它事情处理,就能休眠,在定时触发后自动唤醒,无定时触发时长期休眠,可以外部中断唤醒。控制命令在协调器发出后7秒内发送一个Nwk_Poll
Hi,Aries Lord:
控制命令在协调器发出后7秒内发送一个Nwk_Poll 是什么意思?
7s是不是意味着协调器发送一个控制命令给终端,终端7s之后或者时间更长才能够执行 ?
@PM,
建议先了解下Z-Stack协议栈在OSAL操作系统中运行是的休眠实现机制。另外也了解下ZigBee协议中终端设备和父设备之间的通信机制。