TI中文支持网
TI专业的中文技术问题搜集分享网站

请问Z-STACK协议栈中,在哪里修改能使zigbee终端断网之后不再重新连接协调器?

请问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()一般是配套使用的。建议楼主能搞清楚入网,断网重连等的具体流程,这样你就可以根据自己的需要去修改协议栈实现自己的功能。

赞(0)
未经允许不得转载:TI中文支持网 » 请问Z-STACK协议栈中,在哪里修改能使zigbee终端断网之后不再重新连接协调器?
分享到: 更多 (0)