我在测试的时候发现,当断开协调器的电源,ZigBee终端设备如果不重新上电的话SampleApp_NwkState参数始终没有发生变化,始终是DEV_END_DEVICE状态,导致触发了扫网的事件,但是不能真正的去扫网,这是什么原因,请大神帮忙回答一下,谢谢!!!!
YiKai Chen:
用IAR 調試看看当断开协调器的电源後,ZigBee终端设备會不會進入ZDO_STATE_CHANGE
user5351040:
回复 YiKai Chen:
很奇怪的就是调试的时候我发现,在没有有状态改变的时候就一直会进入ZDO_STATE_CHANGE,好像是5秒这样,一直会触发ZDO_STATE_CHANGE,这是正常的吗
YiKai Chen:
回复 user5351040:
不正常、你抓包看看是不是終端跟本沒有入網
Alvin Chen:
回复 user5351040:
当你入网成功后,除非有类似leave 或者rejoin 才会有变化,请抓包看看是否有退网。你的SDK版本?
user5351040:
回复 YiKai Chen:
入网是肯定入网了,因为我们有服务器,上传的信息可以直接打印出来的,状态帧都已经打印出来了的
user5351040:
回复 Alvin Chen:
我的协议栈的版本是zstack 2.5.1a版本的
YiKai Chen:
回复 user5351040:
抓包看是最準的
user5351040:
回复 YiKai Chen:
会不会是我的调试方法有问题,我在调试的时候发现在上电扫网的时候判断if( zll_IsFactoryNew())的时候同时进入了if和else。。。是同时的,不是重新触发了ZDO_STATE_CHANGE
YiKai Chen:
回复 user5351040:
调试的时候同时进入了if和else可能是IAR optimization level造成,把他設置成low再调试看看
user5351040:
回复 YiKai Chen:
的确是IAR optimization level造成的!我调成low就可以啦,谢谢,我再调试一下。
还有就是我好像有看到过,说在持续扫网的过程中是会经常进入ZDO_STATE_CHANGE的,因为是扫一次网就要反馈一下信息,这种说法是正确的吗?谢谢!