TI论坛
直播中

陆兰兰

7年用户 153经验值
私信 关注
[问答]

请问怎样让Z-Stack Home 1.2.2 ZDO_StartDevice发起Beacon

我在用Z-Stack Home 1.2.2a.44539 开发开关类的设备,如面板开关,插座等。 遇到一个问题:
   ZDO_StartDevice发起Beacon时,只在11号信道发送广播,约每800ms发送一次。
   怎样让程序在每个信道都发送beacon?

回帖(7)

庄当甜

2018-8-18 07:30:25
这是因为您现在的默认信道是11信道。
组网时,协调器会先选择一个空闲的信道,如果组网完成进行数据收发的时候,发现存在信道占用,则可以跳频
协议栈中有针对ED Scan的API函数 NLME_EDScanRequest( MAX_CHANNELS_24GHZ, _NIB.scanDuration )
您为何要让其在每个信道都发送beacon?
举报

苏笛笛

2018-8-18 07:49:42
这个简单,可以修改DDEFAULT_CHANLIST的值,使用全2.4G频道就可以了,如果需要在使用的过程中切换指定信道和PANID可以看看我的这篇帖子http://www.kaleidscope.cn:1020/archives/2706
举报

陆兰兰

2018-8-18 08:00:04
引用: 小Qhhui 发表于 2018-8-18 07:30
这是因为您现在的默认信道是11信道。
组网时,协调器会先选择一个空闲的信道,如果组网完成进行数据收发的时候,发现存在信道占用,则可以跳频
协议栈中有针对ED Scan的API函数 NLME_EDScanRequest( MAX_CHANNELS_24GHZ, _NIB.scanDuration )

 你好:
          因为协调器有可能不在11号信道,所以要在每个信道发送beacon。现在我的解决方法是在ZDO_StartDevice函数中更改如下。
      //ret = NLME_NetworkDiscoveryRequest( runtimeChannel, zgDefaultStartingScanDuration );
      ret = NLME_NetworkDiscoveryRequest( 0x07FFF800, 4 );

       现在,设备可以加入到在任何信道的协调器,但在入网发送beacon时,发送三次beacom会间隔15S(设备重启)。我跟踪代码后发现是产生了ZDO_DEVICE_RESET 事件。
举报

王秀珍

2018-8-18 08:12:59
引用: 60user94 发表于 2018-8-18 08:00
 你好:
          因为协调器有可能不在11号信道,所以要在每个信道发送beacon。现在我的解决方法是在ZDO_StartDevice函数中更改如下。
      //ret = NLME_NetworkDiscoveryRequest( runtimeChannel, zgDefaultStartingScanDuration );

可以开个5s定时器,调用 ZDApp_StartJoiningCycle  和  ZDApp_StopJoiningCycle,多久都可以控制!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分