从零开始学习Zstack之9.doc
文本预览下载声明
从零开始学习Z-Stack之9
接到昨天的继续忽悠,话说:2、SimpleApp“这个例子我基本跑通了,可是鉴于时间的关系,没有来得及打字了,所以就留到下一次了,时间真是如流水啊-------------------快!….”这个例子里面有两个演示:一个是灯与开关的控制实验,一个温度传感器实验。咱一个个来,不忙。灯与开关实验在这个例子中灯对应的工程名字为:SimpleControllerDB;开关对应:SimpleSwitchDB。严重需要注意的地方,这里选用的是DB。因为从从零开始学习Z-Stack之1上可以看到DB与EB的区别,而这里用DB的硬件就足以应付。编译下载我就不继续罗嗦了。咱关心的几个问题不外乎就是表演过程和表演结果,以及初步看看为什么会有这样的结果产生,当然就得从程序上简单了解下。首先打开Controller(也就是灯设备)的电源,那么LED2就会不停的闪烁,这个时候是设备正在初始化,让您选择设备以哪种类型启动,从程序可以看出:??? if ( keys HAL_KEY_SW_1 )??? {????? if ( myAppState == APP_INIT? )????? {??????? // In the init state, keys are used to indicate the logical mode.??????? // Key 1 starts device as a coordinator??????? zb_ReadConfiguration( ZCD_NV_LOGICAL_TYPE, sizeof(uint8), logicalType );??????? if ( logicalType != ZG_DEVICETYPE_ENDDEVICE )??????? {????????? logicalType = ZG_DEVICETYPE_COORDINATOR;????????? zb_WriteConfiguration(ZCD_NV_LOGICAL_TYPE, sizeof(uint8), logicalType);??????? }
??????? // Do more configuration if necessary and then restart device with auto-start bit set??????? // write endpoint to simple desc...dont pass it in start req..then reset??????? zb_ReadConfiguration( ZCD_NV_STARTUP_OPTION, sizeof(uint8), startOptions );??????? startOptions = ZCD_STARTOPT_AUTO_START;??????? zb_WriteConfiguration( ZCD_NV_STARTUP_OPTION, sizeof(uint8), startOptions );??????? zb_SystemReset();????? }如果按下S1(UP),那么作为协调器启动。?? if ( keys HAL_KEY_SW_2 )??? {????? if ( myAppState == APP_INIT )????? {??????? // In the init state, keys are used to indicate the logical mode.??????? // Key 2 starts device as a router??????? zb_ReadConfiguration( ZCD_NV_LOGICAL_TYPE, sizeof(uint8), logicalType );??????? if ( logicalType != ZG_DEVICETYPE_ENDDEVICE )??????? {????????? logicalType = ZG_DEVICETYPE_ROUTER;????????? zb_WriteConfiguration(ZCD_NV_LOGICAL_TYPE, sizeof(uint8), logicalType);??????? }??????? zb_ReadConfiguration( ZCD_NV_STARTUP_OPTION, sizeof(uint8), startOptions );??????? startOptions = ZCD_STARTOPT_AUTO_START;??????? zb_W
显示全部