请问Z-STACK协议栈中,在哪里修改能使zigbee终端断网之后不再重新连接协调器?
因为终端是电池供电,设置为PM3模式,中断唤醒。如果协调器故障断电了,若此时唤醒终端,向协调器发送数据,协调器因断电没有开启,不能给终端返回应答信号,终端在之后会不断重新连接协调器,这样会非常费电池电量。所以我想关闭这种断网重连机制,请问该如何实现?或者该怎么解决这种问题? 请各位大大帮我解惑,十分感谢!
Susan Yang:
如果不想让节点不停的去搜索网络的话,可以extern uint8 ZDApp_StopJoiningCycle( void );,把搜索网络关掉,或者开一个定期把搜网的周期拉大
cloud lee:
回复 Susan Yang:
Susan Yang 您好:
好的,谢谢,我先尝试一下。
Susan Yang:
回复 cloud lee:
您也可以参考 论坛的置顶帖 http://www.deyisupport.com/question_answer/wireless_connectivity/zigbee/f/104/t/75525.aspx
问题4
cloud lee:
回复 Susan Yang:
Susan Yang 您好:
我尝试了一早上,实在是不知道ZDApp_StopJoiningCycle()这个函数添加到什么位置。按理说当终端中断唤醒后给协调器发送数据,协调器挂了没有应答,终端反复发送数据无果,就开始重新搜索网络。但是我现在找不到重新搜索网络的函数接口。请问此函数在什么位置添加比较合适呢? 也就是终端反复向协调器发送数据没收到应答,不重新连接协调器,完毕后直接休眠。
cloud lee:
回复 Susan Yang:
Susan Yang 您好:
请问终端在断网后,怎么停止继续想、搜索网络,uint8 ZDApp_StopJoiningCycle 函数应在什么位置添加较为适合?
xu zhang7:
回复 cloud lee:
在ZDO_StartDevice()函数中,加在这个判断句里面if (startMode == MODE_REJOIN && scanCnt++ >= 5 ),直接加一句ZDApp_StartJoiningCycle();就可以了
xu zhang7:
回复 xu zhang7:
抱歉写错了,加的应该是ZDApp_StopJoiningCycle();
cloud lee:
回复 xu zhang7:
xu zhang7 您好:
尝试了加了一下,发现没有起到作用,下一次不能加入到协调器。LED隔一秒闪一下,测了功耗,LED灭的情况下2.2UA 亮的情况170UA
VV:
回复 cloud lee:
@Xu,
uint8 ZDApp_StopJoiningCycle( void )是停止网络搜索,
当你需要加网的时候需要通过 uint8 ZDApp_StartJoiningCycle( void )打开。
你测试的功耗2.2uA,说明已经没有在搜网了,不然功耗没有那么低
xu zhang7:
回复 VV:
V V说的是对的,我也是这样做的。确实ZDApp_StartJoiningCycle()和ZDApp_StopJoiningCycle()一般是配套使用的。建议楼主能搞清楚入网,断网重连等的具体流程,这样你就可以根据自己的需要去修改协议栈实现自己的功能。