This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我在用Z-Stack Home 1.2.2a.44539 开发开关类的设备,如面板开关,插座等。 遇到一个问题:
ZDO_StartDevice发起Beacon时,只在11号信道发送广播,约每800ms发送一次。
怎样让程序在每个信道都发送beacon?
这是因为您现在的默认信道是11信道。
组网时,协调器会先选择一个空闲的信道,如果组网完成进行数据收发的时候,发现存在信道占用,则可以跳频
协议栈中有针对ED Scan的API函数 NLME_EDScanRequest( MAX_CHANNELS_24GHZ, _NIB.scanDuration )
您为何要让其在每个信道都发送beacon?
这个简单,可以修改DDEFAULT_CHANLIST的值,使用全2.4G频道就可以了,如果需要在使用的过程中切换指定信道和PANID可以看看我的这篇帖子http://www.kaleidscope.cn:1020/archives/2706
你好:
因为协调器有可能不在11号信道,所以要在每个信道发送beacon。现在我的解决方法是在ZDO_StartDevice函数中更改如下。
//ret = NLME_NetworkDiscoveryRequest( runtimeChannel, zgDefaultStartingScanDuration );
ret = NLME_NetworkDiscoveryRequest( 0x07FFF800, 4 );
现在,设备可以加入到在任何信道的协调器,但在入网发送beacon时,发送三次beacom会间隔15S(设备重启)。我跟踪代码后发现是产生了ZDO_DEVICE_RESET 事件。