zigbee通讯

【一】单播

           zigbee网络中协调器的短地址是0,其他设备的地址由协调器在组网的时候分配

//终端节点单播消息给协调器,协调器接收终端无线消息后,显示消息内容和终端节点短地址
/*地址模式为短地址单播模式*/
My_DstAddr.addrMode = (afAddrMode_t)afAddr16Bit;
My_DstAddr.endPoint = 21;           //端点号
My_DstAddr.addr.shortAddr = 0x0;    //协调器地址

/*发送无线消息*/
AF_DataRequest(&My_DstAddr,  //发送设备类型编号
                       &MytaskApp_epDesc,
                       SAMPLEAPP_POINT_TO_POINT_CLUSTERID,
                       6,
                       "hello\0",
                       &MytaskApp_TransID,
                       AF_DISCV_ROUTE,
                       AF_DEFAULT_RADIUS );
/*获取无线消息*/                      
printf("coord_rev_msg:%s\n",pkt->cmd.Data);
/*获取终端节点短地址*/
printf("end_addr:%#x\n",pkt->srcAddr.addr.shortAddr); 

【二】组播

/*
 *功能:将端点添加到组
 *参数:
 *       @endpoint    端点
 *       @group       组信息结构体指针
 */
ZStatus_t aps_AddGroup(uint8 endpoint, aps_Group_t *group);

typedef struct
{
  uint16 ID;                       // 组ID
  uint8  name[APS_GROUP_NAME_LEN]; // 组名
} aps_Group_t;

//实现组播时,如果终端节点想接收组播消息,需要修改配置文件中的该项
-DRFD_RCVC_ALWAYS_ON=TRUE

//修改成组播模式
My_DstAddr.addrMode = (afAddrMode_t)afAddrGroup;
My_DstAddr.endPoint = 21;
My_DstAddr.addr.shortAddr = MYTASKAPP_GROUP; //0x2 组ID

 

你可能感兴趣的:(zigbee通讯)