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

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

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

chen jack2:

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

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

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

bo fu:

回复 chen jack2:

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

Viki Shi:

回复 bo fu:

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

bo fu:

回复 Viki Shi:

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

bo fu:

回复 bo fu:

我做了个实验:

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上移除该节点,但是就是加不上新的路由节点,这是为什么呢?

请各位大神帮忙看看

VV:

回复 bo fu:

你的路由Permit Join有打开吗

bo fu:

回复 VV:

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

decheng gu:

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

赞(0)
未经允许不得转载:TI中文支持网 » 终端加入特定的路由的问题!
分享到: 更多 (0)