Coordinator收发数据,EndDevice发收数据

该实验介绍了如何通过ZigBee协议栈建立网络,Coordinator负责建立网络并收发数据,LED2闪烁作为响应;EndDevice加入网络后同样收发数据,LED1闪烁作为反馈。当EndDevice发送数据'D2'给Coordinator,Coordinator在接收到数据后,会回传数据给EndDevice。这个过程反复进行,实现两者间的数据交换和LED闪烁效果。
摘要由CSDN通过智能技术生成

实验内容:
Coordinator 建立网络, 接收数据并闪烁 LED2 和发送数据
EndDevice 加入网络, 发送数据和接收数据并闪烁 LED1

程序流程:
①协调器建立网络(Z-Stack 协议栈帮助建立起网络)

②终端节点加入网络后触发 ZDO_STATE_CHANGE 事件, 判断加入的设备若是终端节点
DEV_END_DEVICE 则调用数据发送函数 GenericApp_SendTheMessage() 发送数据”D2”给协调

③协调器接收来自终端节点的数据”D2”并触发 AF_INCOMING_MSG_CMD 事件, 调用消
息处理函数 GenericApp_MessageMSGCB( MSGpkt )

④在协调器 GenericApp_MessageMSGCB( MSGpkt ) 函数中判断接收到的数据是否为”D2”,
是则调用 HalLedBlink(HAL_LED_2,0,50,500) 函 数 执 行 LED2 闪 烁 并 调 用 数 据 发 送 函 数
GenericApp_SendTheMessage()AF_DataRequest() 函数发送数据给终端节点

⑤终端节点接收来自协调器的数据”LED”并触发 AF_INCOMING_MSG_CMD 事件, 调用消
息处理函数 GenericApp_MessageMSGCB( MSGpkt )

⑥在终端节点 GenericApp_MessageMSGCB( MSGpkt ) 函数中判断接收到的数据是否
为”LED”,是则调用 HalLedBlink(HAL_LED_1,0,50,500) 函数执行 LED1 闪烁并调用数据发送函数
GenericApp_SendTheMessage()AF_DataRequest() 函数发送数据”D2”给协调器。

如此往复,Coordinator和EndDevice互发互收数据并执行LED闪烁。
代码如下:
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


/*
 * 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
};

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,
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值