1. 程式人生 > >ZigBee TI ZStack CC2530 4.14 廣播通訊

ZigBee TI ZStack CC2530 4.14 廣播通訊

(配套原始碼軟體開發板等資源,可移步部落格同名QQ群:拿破崙940911

前面兩節中,我們詳細介紹了ZigBee的第一種無線通訊方式——單播;本節中,我們將介紹ZigBee的第二種無線通訊方式——廣播。

(僅描述與單播通訊不同之處)

本節中實現的功能為:三個以上ZigBee裝置組網成功後,網路中任意一個裝置按下KEY1,網路中其餘ZigBee裝置上的LED1狀態均會取反,同時串列埠也會打印出接收到的廣播資料。

1、廣播發送函式,宣告及定義如下:

......
static void ProjectApp_SendBroadcast( void );
......
static void ProjectApp_SendBroadcast( void )
{
  char theMessageData[ ] = "Broadcast data\r\n";

  ProjectApp_DstAddr.addrMode       = (afAddrMode_t)AddrBroadcast;
  ProjectApp_DstAddr.endPoint       = PROJECTAPP_ENDPOINT;
  ProjectApp_DstAddr.addr.shortAddr = NWK_BROADCAST_SHORTADDR_DEVALL;//NWK_PAN_COORD_ADDR;  

  AF_DataRequest( &ProjectApp_DstAddr,
                  &ProjectApp_epDesc,
                  PROJECTAPP_CLUSTERID,
                  (byte)osal_strlen( theMessageData ) + 1,
                  (byte *)&theMessageData,
                  &ProjectApp_TransID,
                  AF_DISCV_ROUTE,
                  AF_DEFAULT_RADIUS
                );
}
相信這個函式的定義大家一眼也能看明白~
2、實驗驗證

(1)呼叫廣播發送函式

static void ProjectApp_HandleKeys( uint8 shift, uint8 keys )
{
  ......
  if ( keys & HAL_KEY_SW_1 )
  {
//    HalLedSet(HAL_LED_1,HAL_LED_MODE_TOGGLE);
//    ProjectApp_SendUnicast16();
    ProjectApp_SendBroadcast();
  }
  ......
}

(2)編譯下載

在IAR左側的Workspace中,一個ZigBee裝置選擇CoordinatorEB編譯下載,其餘所有的ZigBee裝置任意選擇RouterEB或EndDeviceEB編譯下載,如下圖所示進行選擇;

(3)實驗現象

所有的ZigBee裝置上電後,會發現,無論按下哪個ZigBee裝置上的KEY1,其餘所有的ZigBee裝置上的LED1狀態都會取反,同時協調器的串列埠每次都會打印出“Broadcast data”;


(配套原始碼軟體開發板等資源,可移步部落格同名QQ群:拿破崙940911