打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
zigbee让设备直接加入网络(DirectJion) (附代码)

让设备直接加入网络(DirectJion)

 

目录

说明...1

直接模式的实现...2

设置设备默认启动模式...2

将设备加入网络...2

验证的方法...3

 

 

说明

让一个终端或者路由器加入协调器的网络,有两种,一种是全自动加入,只要搜索到匹配的PANID的网络就直接加入,无需用户干预,但是这种方法有个缺点,当同一个地方有两个完全一样协调器,那么一个新的终端设备加入哪个是好呢?怎么才能让新的终端加入指定的协调器呢?那就是第二种方法:设置终端设备的启动模式为再加入方式,MODE_RESUME,这样终端设备启动后不会去自动搜索可加入网络,而是等待协调器的加入请求,当协调器要求终端加入时,则加入.也就是本文所说的直接加入模式

一个设备的启动模式有以下几种:


 

  1. typedef enum  
  2. {  
  3.   MODE_JOIN,  
  4.   MODE_RESUME,  //for dirject  
  5. //MODE_SOFT,      // Not supported yet  
  6.   MODE_HARD,    //jack:for 协调器  
  7.   MODE_REJOIN  
  8. } devStartModes_t;  

 其中MODE_JOIN是就对应上面第一种加入网络的方法, MODE_RESUME就是对应第二种方法.

 

直接模式的实现

设置设备默认启动模式

ZDApp.c中对全局变量devStartMode进行了初始化.,初始化的依据就是设备的类型,如下代码

 
 

 

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

 将设备加入网络

        初始的想法是,每一个终端设备的背面都会有标签,写有mac地址,并有二维码,用手机扫描二维码会得到mac地址,然后手机将mac地址发送到服务器上,服务器将mac发到路由器或机顶盒上,然后通过串口转到协调器中,协调器得到这个mac调用NLME_DirectJoinRequest函数将终端设备加入网络.

        精简版的代码如下:

 

  1. void SampleApp_SerialCMD(mtOSALSerialData_t *cmdMsg)//处理串口来的数据  
  2. {  
  3.     //假定这是串口传来的mac数据  
  4. uint8 ed_addr[8]={0x00,0x12,0x4B,0x00,0x03,0xA5,0x4C,0xDC};  
  5. byte  rfd_type = CAPINFO_DEVICETYPE_RFD;  //设置设备类型为精简版设备  
  6. ……  
  7. #if ( ZG_BUILD_COORDINATOR_TYPE )//如果是协调器则将终端加入网络中  
  8.     NLME_DirectJoinRequest(ed_addr,rfd_type);  
  9. #endif  
  10. …..  
  11. }  

 

  


验证的方法

 

验证是通过终端获取父节点的IEEE64位地址和shortaddr地址来确定的.当终端设备启动后不会自动加入协调器的网络,这时终端去获取父节点的信息肯定是空的,其中IEEE64地址为全0,shortaddrF000(不明白为什么不是0000?),然后通过串口传输数据给协调器,协调器将终端加入网络,再次让终端去获取父节点的信息就能得到值,获取父节点信息的方法在这:

http://blog.csdn.net/jk110333/article/details/22290349

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
对于Linux内核tty设备的一点理解
Linux终端tty
终端 伪终端 控制终端
一文让你详细了解虚拟终端和控制台的区别
[转载]MODBUS
2017年智能终端设备市场现状分析
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服