多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
>[success] 导师视频讲解:[**去听课**](https://www.bilibili.com/video/BV1k34y1D7Vz?p=37) >[success] **技术支持说明:** >**1**.一般以自主学习为主 > **2**.可到官方问答社区中提问:[**去提问**](https://bbs.csdn.net/forums/zigbee) > **3**.工程师**会尽快**解答社区问题,但他们是一线开发,【**难以保证**】解答时效,解答辛苦,感谢理解! <br/> AF的全称是Application Framework,中文意思是应用框架,AF层也就是应用框架层,它在ZigBee协议层次中位置如图所示。 ![](https://img.kancloud.cn/f1/7c/f17c505a345b9857849b88e653957af4_1984x1416.png =600x) ### 开发者可以基于这个层次编写代码,实现ZigBee设备之间的数据通信。 <br/> ## **AF层的通信原理** **网络地址** 前述章节已讲解过网络地址了,处于网络中的ZigBee设备都会被分配一个网络地址,用于标识设备所处的位置。通过这个网络地址就可以找到对应的设备了。 ### **端点号** 读者已经知道ZigBee 3.0是利用简单描述符来描述特定的服务的,并且设备上的每个简单描述符都配有一个唯一的端点号。实际上,ZigBee 3.0通信最终是**发送到设备的特定的服务的,也就是端点号**,举个例子说明其中的原理。 ### ![](https://img.kancloud.cn/e9/dd/e9dde0a5555559b1418c7d9343b8bdfe_850x452.png =400x) 假设现在ZigBee网络中有一个协调器和一个智能插座终端,这个智能插座的网络地址为0x0EF1,并且配有一个简单描述符描述这个插座具备的一些功能,这个简单描述符的端点号是8。 ### 如果协调器要向这个插座发送一个打开指令,不能简单地使用网络地址0x0EF1来说明把命令发送给这个插座,还需要利用端点号8来说明把命令发送给端点号8对应的服务。 ### 如果读者了解过远程服务器的端口号,那么会发现它们之间其实是类似的,例如这个网址**http://www.sxf-iot.com:80**中,既包含了域名,也包含一个80端口号。 ### **端点号的分类** 端点号的取值范围是0~255,其中: * 端点号0被分配给了ZDO(ZigBee Device Object)。 * 端点号255是广播,也就是向这个端点号发送数据时,设备的所有服务(简单描述符)都会收到这个数据。 * 端点号241~254是暂时保留起来的端点号,暂时不能使用。 * 剩下的端点号1~240可以供开发者自由地使用,例如读者一直学习的SampleSwitch这个工程所使用的端点号可以在工程中找到,如图所示。 ![](https://img.kancloud.cn/d9/d4/d9d40d8eb5d55873e2d9694a92549739_832x252.png =600x) ### **通信方式** ZigBee支持3种通信方式,分别是点对点、广播和组播。 * 点对点通信(P2P,Peer to Peer):顾名思义,就是两个设备之间一对一通信。 * 广播:给其他的所有设备发送数据。 * 组播:给一部分的设备发送数据,这里的“一部分”说的就是一个特定的组。 <br/> ## **注册简单描述符** 在使用AF通信前,需要先注册简单描述符并且让对应的端点号生效,或者说让这个简单描述符对应的服务生效。这个流程是: ### (1)创建一个简单描述符。在讲解简单描述符的章节中,我们已经看到相关的定义了。 ### (2)注册这个简单描述符。打开配套的工程,在zcl\_samplesw.c文件中的zclSampleSw\_Init()这个函数中可以找到以下代码,如图所示。 ![](https://img.kancloud.cn/d2/da/d2da9ceeac0c9c331659d553eda661aa_2560x1281.png =500x) ### 在应用层初始化函数zclSampleSw\_Init()中,有两种注册简单描述符的方法: (1)可以调用bdb_RegisterSimpleDescriptor()来在BDB中注册简单描述符。 (2)也可以直接调用afRegister()直接在AF中注册简单描述符。 ### 在注册完简单描述符之后,就可以使用AF层的通信API来收发数据了。 <br/> <br/> ## **项目定制** * 如需项目定制开发,可扫码添加项目经理好友(注明“**项目定制**”) * 定制范围:**NB-IoT**、**CATn(4G)**、**WiFi**、**ZigBee**、**BLE Mesh**以及**STM32**、**嵌入式Linux**等IoT技术方案 * 善学坊官网:[www.sxf-iot.com](https://www.sxf-iot.com/) ![](https://img.kancloud.cn/ca/73/ca739f92cab220a3059378642e3bd502_430x430.png =200x) * 非项目定制**勿扰**,此处**非**技术支持