ZigBee项目开发初步(一)

        在进行ZigBee项目开发之前,需要了解以下基本概念。

1. endpoint

        ZigBee项目的开发是以应用为基础的,一个应用就是一个endpoint,在一个节点上,可以运行240个用户应用程序,编号从1到240,编号为0的是ZDO,这是一个管理应用。编号为255的是广播地址,用于向这个节点的所有应用发送广播信息,如下图所示。所以,一个应用的地址除了节点的网络地址外,还要有endpoint编号,不同的endpoint之间可以发送信息和接收信息。

 

 ZigBee项目开发初步(一)_第1张图片

图:节点上的endpoint

 

2. Application Profiles

        Application Profiles就是应用规范,两个节点要进行通信,必须有共同的Profiles,Profiles是两个节点或设备进行通信的共同语言。所以,只有遵守共同Profiles的两个设备才可以无障碍的通信。

 3. Descriptors 描述符

        描述符分为节点描述符和应用描述符,如下图所示。

        节点描述符中有两项是必须要实现的

l         节点描述符:描述关于设备的基本信息

l         电源描述符:描述设备的供电情况

        应用描述符是与应用有关的描述信息,它是以下三种之一。

l         简单描述符:包含endpoint基本信息,这个描述符必须要实现。

l         复杂描述符:它是一种可选的描述符。

l         用户描述符:它也是一种可选的描述符。

 

 

 

图 节点描述符

 简单描述符包含以下信息:

1.       endpoint地址

2.       实现的应用Profile

3.       设备ID和设备版本

4.       是否有对应的复杂和用户描述符

5.       输入簇和输出簇的列表

一个设备描述符在程序中的实现代码是:

const SimpleDescriptionFormat_t GenericApp_SimpleDesc =

{

  GENERICAPP_ENDPOINT,              //  int Endpoint;

  GENERICAPP_PROFID,                //  uint16 AppProfId[2];

  GENERICAPP_DEVICEID,              //  uint16 AppDeviceId[2];

  GENERICAPP_DEVICE_VERSION,        //  int   AppDevVer:4;

  GENERICAPP_FLAGS,                 //  int   AppFlags:4;

  GENERICAPP_MAX_CLUSTERS,          //  byte  AppNumInClusters;

  (cId_t *)GenericApp_ClusterList,  //  byte *pAppInClusterList;

  GENERICAPP_MAX_CLUSTERS,          //  byte  AppNumInClusters;

  (cId_t *)GenericApp_ClusterList   //  byte *pAppInClusterList;

};

         这个简单描述符变量定义了一个endpoint的endpoint编号,AppProfId,AppDeviceId,AppDevVer以及输入簇和输出簇。

         这些常量的定义在头文件中,具体值是:

#define GENERICAPP_ENDPOINT           10

#define GENERICAPP_PROFID             0x0F04

#define GENERICAPP_DEVICEID           0x0001

#define GENERICAPP_DEVICE_VERSION     0

需要注意的是在一个应用程序中,GENERICAPP_PROFID必须要一致,否则通信时会出现问题。

在实际的应用中,简单描述符是作为结构体endPointDesc_t的一个成员存在的。endPointDesc_t是用来描述endpoint的一个结构体。

typedef struct

{

  byte endPoint;

  byte *task_id;  // Pointer to location of the Application task ID.

  SimpleDescriptionFormat_t *simpleDesc;

  afNetworkLatencyReq_t latencyReq;

} endPointDesc_t;

更多资讯,访问ZigBee技术网:www.wsnzigbee.com

 

 

 

    

你可能感兴趣的:(ZigBee项目开发初步(一))