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


發佈了20 篇原創文章 · 獲贊 5 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章