ZigBee协议是由ZigBee联盟(一个由众多IT企业组成的)制定和管理的一种短距离低速率的无线网络协议。此协议得到了广泛的支持,只要符合此协议的设备都能够互相联网。Zigbee的基础是IEEE 802.15.但IEEE仅处理低级MAC层和物理层协议,因此Zigbee联盟扩展了IEEE,对其网络层协议和API进行了标准化。ZIgBee协议现在比较流行的版本是ZigBee2007。ZigBee协议非常复杂,ZigBee 2007的协议规范,翻译为中文就有800页,这还不包括IEEE规范部分。协议规范对功能做出了要求,有必须的,和可以具备的,在这里不再详细区分。本实验符合的标准时ZigBee2007。其协议的框图如图7所示:
协议栈代码框架
要使用到的API函数与结构体
afStatus_t AF_DataRequest( afAddrType_t *dstAddr, endPointDesc_t *srcEP,
uint16 cID, uint16 len, uint8 *buf, uint8 *transID,
uint8 options, uint8 radius )
参数说明:
*dstAddr :发送目的地址+端点地址(端点号)和传送模式
*srcEP :源(答复或确认)终端的描述(比如操作系统中任务ID等)源EP
cID :被Profile指定的有效的集群号
len :发送数据长度
*buf :发送数据缓冲区
*transID : 任务ID号
options :有效位掩码的发送选项
radius :传送跳数,通常设置为AF_DEFAULT_RADIUS
实现终端发送‘LED’三个字符发送成功后自身LED1闪烁,协调器接收到数据包后判断数据是否为LED,数据正确后自身LED1闪烁,。下面是源码实现的解析过程:
1.终端利用AF函数将数据包(字符LED数组)发送到协调器中。
2.协调器对自己的接到的数据包,进行判断是否有LED三个字符,如果有则LED1翻转,并向串口发送数据