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