Zigbee中的组播实验

1.组播:把各个节点进行分组标记,发送端将数据发送到指定的组,端点,簇 。只有这三个参数一一对应了数据才能被接收到

2.组为两个字节的编号,要和模块里已经定义的可用端点相关连

3.同一个端点可以不关联多个组(比如10号端点可以关联0x0001和0x0002这两个组)

实验目的:

终端:按下K1发送数据给组0x0001,10号端点,簇2
      按下K2发送数据给组0x0002,10号端点,簇2
协调器:按下K1加入组0x0001,并且去除组0x0002,接收到数据并用串口发送出去
路由器:按下K2加入组0x0002,并且去除组0x0001,接收到数据并用串口发送出去

核心代码:
#include "aps_groups.h"
aps_Group_t SampleApp_Group;//定义和组有关的结构体
if(P0_1==0)//K1设置函数
    {
      aps_RemoveGroup( 10, 0x0002 );//移除组2
      SampleApp_Group.ID=0x0001;//设置组
      //将端点添加组
      aps_AddGroup( 10, &SampleApp_Group);//将10号端点加入组0x0001
       
    }
    if(P2_0==0)//K2设置函数
    {
      aps_RemoveGroup( 10, 0x0001 );//移除组1
      SampleApp_Group1.ID=0x0002;//设置组
      //将端点添加组
      aps_AddGroup( 10, &SampleApp_Group1);//将10号端点加入组0x0001 
    }


//接收部分核心代码
if(pkt->groupId == 0x0001)//表示0x0001组接收到数据
  {
    switch ( pkt->clusterId )//判断是哪个簇 
    {
      case 2://如果是簇2
        printf("%s",pkt->cmd.Data);
      break;
    }
  }
  if(pkt->groupId == 0x0002)//表示0x0001组接收到数据
  {
    switch ( pkt->clusterId )//判断是哪个簇 
    {
      case 2://如果是簇2
        printf("%s",pkt->cmd.Data);
      break;
    }
  }


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值