zigbee让设备直接加入网络(DirectJion) (附代码)
2014-03-27 16:27
375 查看
让设备直接加入网络(DirectJion)
目录
说明...1
直接模式的实现...2
设置设备默认启动模式...2
将设备加入网络...2
验证的方法...3
一个设备的启动模式有以下几种:
其中MODE_JOIN是就对应上面第一种加入网络的方法,
MODE_RESUME就是对应第二种方法.
将设备加入网络
初始的想法是,每一个终端设备的背面都会有标签,写有mac地址,并有二维码,用手机扫描二维码会得到mac地址,然后手机将mac地址发送到服务器上,服务器将mac发到路由器或机顶盒上,然后通过串口转到协调器中,协调器得到这个mac调用NLME_DirectJoinRequest函数将终端设备加入网络.
精简版的代码如下:
/article/7987700.html
让设备直接加入网络(DirectJion)
目录
说明...1
直接模式的实现...2
设置设备默认启动模式...2
将设备加入网络...2
验证的方法...3
说明
让一个终端或者路由器加入协调器的网络,有两种,一种是全自动加入,只要搜索到匹配的PANID的网络就直接加入,无需用户干预,但是这种方法有个缺点,当同一个地方有两个完全一样协调器,那么一个新的终端设备加入哪个是好呢?怎么才能让新的终端加入指定的协调器呢?那就是第二种方法:设置终端设备的启动模式为”再加入”方式,即MODE_RESUME,这样终端设备启动后不会去自动搜索可加入网络,而是等待协调器的加入请求,当协调器要求终端加入时,则加入.也就是本文所说的”直接加入模式”一个设备的启动模式有以下几种:
typedef enum { MODE_JOIN, MODE_RESUME, //for dirject //MODE_SOFT, // Not supported yet MODE_HARD, //jack:for 协调器 MODE_REJOIN } devStartModes_t;
其中MODE_JOIN是就对应上面第一种加入网络的方法,
MODE_RESUME就是对应第二种方法.
直接模式的实现
设置设备默认启动模式
在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
将设备加入网络
初始的想法是,每一个终端设备的背面都会有标签,写有mac地址,并有二维码,用手机扫描二维码会得到mac地址,然后手机将mac地址发送到服务器上,服务器将mac发到路由器或机顶盒上,然后通过串口转到协调器中,协调器得到这个mac调用NLME_DirectJoinRequest函数将终端设备加入网络.
精简版的代码如下:
void SampleApp_SerialCMD(mtOSALSerialData_t *cmdMsg)//处理串口来的数据 { //假定这是串口传来的mac数据 uint8 ed_addr[8]={0x00,0x12,0x4B,0x00,0x03,0xA5,0x4C,0xDC}; byte rfd_type = CAPINFO_DEVICETYPE_RFD; //设置设备类型为精简版设备 …… #if ( ZG_BUILD_COORDINATOR_TYPE )//如果是协调器则将终端加入网络中 NLME_DirectJoinRequest(ed_addr,rfd_type); #endif ….. } | |
验证的方法
验证是通过终端获取父节点的IEEE64位地址和shortaddr地址来确定的.当终端设备启动后不会自动加入协调器的网络,这时终端去获取父节点的信息肯定是空的,其中IEEE64地址为全0,shortaddr为F000(不明白为什么不是0000?),然后通过串口传输数据给协调器,协调器将终端加入网络,再次让终端去获取父节点的信息就能得到值,获取父节点信息的方法在这:/article/7987700.html
相关文章推荐
- ZIgbee设备加入网络过程(方式一 关联加入)
- ZIgbee设备加入网络过程(方式一 关联加入)
- ARM11 paltform驱动代码完成,最简单的测试直接在装载设备中运行,实现秒读
- 如何在Blog中加入个性公告---网络精英代码
- zigbee基本概念--网络设备类型和PANID
- Zigbee网络设备启动—主要函数说明
- 从捕包数据上看终端设备3种加入网络过程
- 如何防止Zigbee加入不该加的网络
- Zigbee网络设备启动流程—终端(自启动模式)
- 直接粘贴代码到网络上:command-line pastebins
- Zigbee网络设备启动流程—协调器(自启动模式)
- zigbee 终端设备如何离开当前网络
- CHROME开发者工具的小技巧【代码格式化、强制DOM、动画、直接编辑、网络限速、复制HTTP请求、抓图】
- 直接运行 html 代码(参考网络)
- wgetpaste:直接 Paste 代码到网络上
- access vba代码直接创建网络盘符或打开内部网络共享文件夹
- 在ZigBee网络中怎么实现节电断电之后重新加入网络
- xen网络前端驱动代码分析(设备初始化篇)
- 在ZigBee网络中实现节电断电之后重新加入网络
- delphi 将 HTML 代码直接加入到 TWebbrowser 组件中去