微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 终端加入特定的路由的问题!

终端加入特定的路由的问题!

时间:10-02 整理:3721RD 点击:

每一个终端设备的背面都会有标签,写有mac地址,然后通过串口把终端的mac地址转到协调器中,协调器得到这个mac传给路由,路由得到后在怎么做才能让该终端加入网络呢。怎么不让其他终端加入网络呢,而让该终端加入网络?

其实没看大懂你的意思,什么应用场景才用到终端通过串口给coo传输数据呢?

为什么必须是路由控制终端是否能加入,协调器控制不更好吗?

给你个思路:终端自动加入网络中,加入后周期性给协调器发送数据包,数据包中包含自身mac地址,协调器得到后对比白名单,不在白名单内就把这个节点删除。

我是这样的情况:我在一个路口有1个协调器,四个路由,协调器下的子节点就只想有四个路由,而不让终端加入协调器而加入指定路由,这样有什么办法吗

一般情况下,zigbee是通过网络状况来判断加入途径的,节点跟路由距离如何?

就20米以内吧,请问VV大神,有没有路由控制终端加入啊,自组网不能控制加入网络啊

我做了个实验:

1.让终端节点以孤节点方式加入网络;在ZDApp.c中对全局变量devStartMode进行了初始化.

  • #if ( ZG_BUILD_RTRONLY_TYPE ) || ( ZG_BUILD_ENDDEVICE_TYPE ) 
  • // devStartModes_t devStartMode = MODE_JOIN;     // Assume joining 
  •   devStartModes_t devStartMode = MODE_RESUME; // if already "directly joined" 
  •                         // to parent. Set to make the device do an Orphan scan. 
  • #else       //当设备类型为协调器时 
  •   // Set the default to coodinator 
  •   devStartModes_t devStartMode = MODE_HARD; 
  • #endif 

2.先把终端从已经加入的路由上移除:

NLME_LeaveReq_t zaddr;       zaddr.extAddr=device_address;  

    zaddr.removeChildren=true;       zaddr.rejoin=true;       zaddr.silent=true;       ZStatus_t   zStatus_t=NLME_LeaveReq((NLME_LeaveReq_t *)&zaddr );       HalUARTWrite ( 0,(uint8 *)&zStatus_t, 1);

3 .终端加入新的路由节点:

  • uint8 device_address[8]={0x00,0x12,0x4B,0x00,0x03,0xA5,0x4C,0xDC}; 
  • byte  rfd_type = CAPINFO_DEVICETYPE_RFD;  //设置设备类型为精简版设备 
  • …… 
  • #if ( ZG_BUILD_COORDINATOR_TYPE )//如果是协调器则将终端加入网络中 
  •     NLME_DirectJoinRequest(device_address,rfd_type); 
  • #endif 

这样的实验结果是:能从路由1上移除该节点,但是就是加不上新的路由节点,这是为什么呢?

请各位大神帮忙看看

你的路由Permit Join有打开吗

谢谢VV大神。我的路由Permit Join是打开的。还是加不上呢?

你好,我最近碰到了你以前碰到过的问题,就是怎么修改扩展panid,请问你最好怎么解决的呢?方便的话,可以加一下qq吗?532306279

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top