您好!
我的终端节点开启的编译选项有ZIGBEEPRO,NWK_AUTO_POLL,ZTOOL_P1,NV_INIT,POWER_SAVING。当协调器没上电,终端节点设备先上电时,终端节点无法进入休眠。
此时应该是终端节点一直在搜寻可加入的网络。有没有办法让终端节点隔几分钟再搜索网络或者上电后没搜到网络就不再进行网络搜索?这样可以进入休眠模式省电。
我尝试过将ZDO_StartDevice()函数的最后一行注释掉,但无效。
盼指点!谢谢!
jiye wang:
这个问题我是采用的如下方法:几次加入网络失败,进入休眠,休眠一段时间后重启,重新尝试加入网络。这样效果还行。
VV:
回复 jiye wang:
ZDApp_StartJoiningCycle()开始搜网
ZDApp_StopJoiningCycle()结束搜网
Hao Wang6:
我也遇到了
终端会不断的搜索网络。所以实际的方式应该是休眠一段时间后然后醒来再搜索网络,一定时间后再停止搜索。
用楼上的API。
以测可行
ZDApp_StartJoiningCycle()开始搜网
ZDApp_StopJoiningCycle()结束搜网
可以看看我的提问帖子
http://www.deyisupport.com/question_answer/wireless_connectivity/zigbee/f/104/p/61315/144911.aspx#144911
Junping Wan:
回复 Hao Wang6:
1.使用ZDApp_StopJoiningCycle(),对于协调器没上电时,终端节点停止搜索有效;
2.协调器跟终端节点组网后,协调器再掉电,使用该函数终端节点还是会搜索。如何解决协调器掉电后终端节点搜索网络的问题呢??
急盼有人能帮忙解答!谢谢!
VV:
回复 Junping Wan:
1,你在哪里添加了这个函数
2,组网后,协调器掉电以后的状态时什么?
ZDApp_StopJoiningCycle只有在DEV_INIT或者DEV_NWK_DISC状态的时候才会有效果
Junping Wan:
回复 VV:
感谢回复!
1.在sampleApp.c的SampleApp_Init()函数里延时3s后执行的;
2.终端节点加了POWER_SAVING选项,好像串口打印不了,暂时还不知道devState的状态值。
想请问下,主机掉电后,终端节点是在哪个函数下切换devState的状态值的?如何在主机掉电后,不管终端节点处于什么状态都不要让它有扫描?
VV:
回复 Junping Wan:
1,SampleApp_Init()只有在程序上电初始化的时候执行到,后续不会再去执行了。
2,Power Saving状态下高频晶振已经关闭,串口没法工作。
底层改变devState地方你没法看到,但是当devState改变的时候,会以 ZDO_STATE_CHANGE这个事件通知应用层节点的状态改变,那么你只要在发送事件到达的地方加入ZDApp_StopJoiningCycle()就可以了。
ZANGk:
回复 VV:
组网后,父节点掉电以后,子节点状态变成DEV_HOLD,不是dev_init和dev_nwk_disc,所以ZDApp_stopjoiningcycle函数进不去
VV:
回复 ZANGk:
失去父节点以后会变成DEV_NWK_ORPHAN,然后是DEV_NWK_DISC
Wendellsun:
回复 VV:
在节点为DEV_NWK_DISC 下可以调用 ZDApp_StopJoiningCycle(); 然后功耗在8ma 还有什么方法降低功耗吗?