一、zigbee四种通讯
1、单播:在Zigbee网络里,模块之间进行通信,发送模块非常明确知道接收模块的网络地址,以这个地址发送数据给接收模块,叫做单播。
2、广播(略)
3、组播(略)
4、绑定(略)
PS:zigbee模块的网络地址的特点:当模块入网时,父节点随机分配网络地址给子节点;协调器作为网络中的第一个节点,它的网络地址固定是0x0000。
二、单播字符收发实验
本次做的实验是一共两个模块,协调器作为接收方,终端作为发送方。实现终端按键1按下,发送数据包;协调器收到数据包后,LED亮灭翻转,将数据包中的有效数据发送给电脑上位机。
本次实验的代码是在zigbee笔记:十一 实验基础上完成的。
1、发送端(终端)代码配置
实现效果:按下按钮KEY1,将数据发送出去。
1)首先在smartHomeApp.c中找到smartHomeApp_ProcessZDOMsgs函数。
选择如下代码,提取出来。
smartHomeApp_DstAddr.addrMode = (afAddrMode_t)Addr16Bit;
smartHomeApp_DstAddr.addr.shortAddr = pRsp->nwkAddr;
smartHomeApp_DstAddr.endPoint = pRsp->epList[0];
/*
smartHomeApp_DstAddr.addr.shortAddr = pRsp->nwkAddr中的
pRsp->nwkAddr表示接收方地址,改为0x0000,作为我们的协调器地址(接收方);
*/
smartHomeApp_DstAddr.addrMode = (afAddrMode_t)Addr16Bit;
smartHomeApp_DstAddr.addr.shortAddr = 0x000;
smartHomeApp_DstAddr.endPoint = pRsp->epList[0];
2)然后在smartHomeApp_Init找到smartHomeApp_ENDPOINT,将其提取出来。
将smartHomeApp_DstAddr.endPoint = pRsp->epList[0]中的pRsp->epList[0]替换为smartHomeApp_ENDPOINT。
smartHomeApp_DstAddr.addrMode = (afAddrMode_t)Addr16Bit;
smartHomeApp_DstAddr.addr.shortAddr = 0x000;
smartHomeApp_DstAddr.endPoint = pRsp->epList[0];
/*
将smartHomeApp_DstAddr.endPoint = p