青岛公司网站建设价格下载爱城市网app官方网站
在ZigBee中,协调器和终端节点进行无线数据收发,对于刚初学的人来说可能不知道怎么下手。分不清哪个是Coordinator哪个EndDevice的内容。
那就先从GenericApp的例程开始,将Coordinator和EndDevice的内容拆分学习。
这里先讲个Coordinator只发不收,EndDevice只收不发的简单例子。
实验内容:
协调器只发不收, 终端节点只收不发的一个简单例子。
程序流程:
①定义事件(shijian)
②协调器建立网络
③读取系统事件, 若无, 则执行 default 内容; 若发生 shijian 事件则执行信息发送函数并清
除 shijian 事件标志
④终端节点加入网络后, 执行 LED2 闪烁
⑤终端节点收到协调器发来的数据, 执行被调用的信息处理函数使 LED1 闪烁
话不多说,直接上代码,注释也在代码里。
代码如下:
Coordinator.h头文件:
#ifndef GENERICAPP_H
#define GENERICAPP_H#include "ZComDef.h"//这些常量仅为示例,应根据设备的需要进行更改。
#define GENERICAPP_ENDPOINT 10#define GENERICAPP_PROFID 0x0F04
#define GENERICAPP_DEVICEID 0x0001
#define GENERICAPP_DEVICE_VERSION 0
#define GENERICAPP_FLAGS 0#define GENERICAPP_MAX_CLUSTERS 1
#define GENERICAPP_CLUSTERID 1#define shijian 0x0001 //自定义事件
/** Task Initialization for the Generic Application通用应用程序的任务初始化*/
extern void GenericApp_Init( byte task_id );/** Task Event Processor for the Generic Application通用应用程序的任务事件处理器*/
extern UINT16 GenericApp_ProcessEvent( byte task_id, UINT16 events );#endif /* GENERICAPP_H */
Coordinator.c文件:
#include "OSAL.h"
#include "AF.h"
#include "ZDApp.h"
#include "ZDObject.h"
#include "ZDProfile.h"
#include<string.h>
#include "Coordinator.h"
#include "DebugTrace.h"
#if !defined( WIN32 )#include "OnBoard.h"
#endif
#include "hal_lcd.h"
#include "hal_led.h"
#include "hal_key.h"
#include "hal_uart.h"const cId_t GenericApp_ClusterList[GENERICAPP_MAX_CLUSTERS] =
{GENERICAPP_CLUSTERID //簇ID
};const SimpleDescriptionFormat_t GenericApp_SimpleDesc = //简单描述
{GENERICAPP_ENDPOINT,GENERICAPP_PROFID,GENERICAPP_DEVICEID,GENERICAPP_DEVICE_VERSION,GENERICAPP_FLAGS,GENERICAPP_MAX_CLUSTERS,(cId_t *)GenericApp_ClusterList,0,(cId_t *)NULL