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