1.1 网络标识符
ZigBee协议使用一个16位的个域网标志符(PAN ID)来标识一个网络。ZStack允许用两种方式配置PAN ID,当ZDAPP_CONFIG_PAN_ID值不设置为0xFFFF时,那么设备建立或加入网络的PAN ID由ZDAPP_CONFIG_PAN_ID指定;如果设置ZDAPP_CONFIG_PAN_ID为0xFFFF,那么设备就将建立或加入一个“最优”的网络。
PANID的出现一般是伴随在,确定信道以后的。PANID其全称是Personal Area Network ID,网络的ID(即网络标识符),是针对一个或多个应用的网络,用于区分不同的ZigBee网络,一般是mesh或者cluster tree两种拓扑结构之一。所有节点的PAN ID唯一,一个网络只有一个PANID,它是由pan协调器生成的,PANID是可选配置项,用来控制ZigBee路由器和终端节点要加入那个网络。文件f8wConfg.cfg中的 ZDO_CONFIG_PAN_ID 参数可以设置为一个 0~0x3FFF 之间的一个值。协调器使用这个值,作为它要启动的网络的 PAN ID。而对于路由器节点和终端节点来说只要加入一个已经用这个参数配置了PAN ID的网络。如果要关闭这个功能,只要将这个参数设置为0xFFFF。要更进一步控制加入过程,需要修改ZDApp.c文件中的ZDO_NetworkDiscoveryConfirmCB函数(一般不修改)。当然了,如果ZDAPP_CONFIG_PAN_ID被定义为0xFFFF,那么协调器将根据自身的IEEE地址建立一个随机的PANID(0~0x3FFF)。
1.2 ZigBee协调节点接收数据
当射频接收到数据时会触发中断产生一个消息事件,SAPI_ProcessEvent()函数判断事件类型,
当消息事件类型pMsg->hdr.event == AF_INCOMING_MSG_CMD 时,进入数据接收和数据处理函数。
SAPI_ReceiveDataIndication(pMSGpkt->srcAddr.addr.shortAddr, pMSGpkt->clusterId,
pMSGpkt->cmd.DataLength, pMSGpkt->cmd.Data);
#define AF_INCOMING_MSG_CMD 0x1A // Incoming MSG type message
可以跟踪这个函数SAPI_ReceiveDataIndication( ) ->zb_ReceiveDataIndication( )
->sendGtwReport();在sendGtwReport()中进行处理。把接收到的数据进行打印到串口上。
控制软件读取FS210的串口数据并分析数据类型,在FS210上显示设备类型和数据。并且可以点击屏幕上控制设备的图标,可以控制终端设备的状态。
1.3 ZigBee协调节点接收协议
在上位机上显示终端的实时信息,必须有相应的传输协议,协议里含有终端的相应信息。
制定协议如下:
(1)串口打印数据协议信息:
21 Z6F 7954 13 23 00 3E14EB
21 协议头’!’ Z:ZigBee6F 79:模块源节点地址54:类型13 23 00:数据/设备状态3E14:父节点地址 EB:校验
如果第2数据类型为Z,则代表Zigbee连接到网络中,网络拓扑会显示ZigBee的相关节点。
(2)协调节点串口发送的信息:
# C Z f 79 6F 01
“# C”控制终端的协议头 Z:ZigBee 79 6F:终端节点地址01 控制命令(1:开/0:关) |