zigbee學習筆記十二 組播通訊

2021-10-23 00:19:50 字數 1610 閱讀 2824

1、協調器建立網路,並加入乙個組,向組內成員組播資料「i am coordinator device \n」

2、終端1加入網路,並加入與協調器相同的組,收到協調器傳送而來的資料

2、終端2加入網路,並加入另外乙個組,不能收到協調器發來的資料

1、複製工程模板,並重命名

2、加入串列埠通訊**

3、配置組播

#include string.h

#include mt_uart.h

2、還是老套的流程,搞一搞串列埠初始化以及函式列印

以及關閉我們的流控,並設定我們的波特率為115200

void

( uint8 task_id )

aps_group_t;

串列埠和組播的初始化到此完成,主要做的一些位址的填充,接下來我們進入事件輪詢

case zdo_state_change:

(devstates_t)

(msgpkt->hdr.status)

;//首先還是在這裡獲取網路狀態

if//然後判斷是否為協調器狀態

else

break

;

仍然是我們熟悉的週期性傳送資料

if

協調器傳送訊息完成了

void

(void

)else

}

傳送資料完成之後,我們進入終端的接收資料

進入事件輪詢的,接收到新的訊息

case af_incoming_msg_cmd:

( msgpkt )

;break

;

進入訊息處理函式

void

( afincomingmsgpacket_t *pkt )

}

需要注意的一點是,在我們的模板中,預設讓我們的終端處於低功耗模式,處於休眠狀態,定時的喚醒終端來接收訊息

而休眠模式不能接收組播發送的訊息,因為他的接收器沒有開啟,我們要讓他的接收器一直開啟,那麼我們這樣操作

將**的 false 改為true,就可以讓我們的接收器一直處於開啟的狀態

最後進行非組播終端的修改

1、將位址改為 0x0002

(afaddrmode_t)afaddrgroup;

//選中組播模式

//埠號的確認

//組播位址

//這裡go to 進去改

0x0002

;//對結構體成員變數賦值 ,這裡我們可以看到與組播位址一致

osal_memcpy

"group 2",7

);aps_addgroup

;//將相應的埠加入這個組

2、組名改為group 2

然後編譯即可

zigbee單播 組播 廣播

設定傳送的目標位址,這裡位址模式addrnotpresent,即按照繫結的方式進行單播,不需要指定目標位址,需要先將兩個裝置繫結,將兩個裝置繫結後即可通訊 還有另外三種傳送方式,如下 enum 2.註冊端點描述符 fill out the endpoint description.register ...

Zigbee組播的實現

typedef struct aps group t 2.對aps group t結構體賦值,示例如下 by default,all devices start out in group 1 void osal memcpy void dst,const void generic src,unsig...

Zigbee協議棧組播通訊

在zigbee網路中組播通訊,模組可以分組來標記,傳送模組的組號和接受模組的組號相對應,那麼這些模組就可以拿到無線資料報。分組中組編號是2個位元組,如0x0001 0x0002。傳送的模組按照組的方式傳送,需要目標模組的組編號,端點,簇。乙個組可以關聯多個端點,同乙個端點也可以關聯多個組。終端節點 ...