Zigbee通信总结|学习笔记

简介: 快速学习Zigbee通信总结

开发者学堂课程【嵌入式之RFID开发与应用2020版:Zigbee通信总结】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/665/detail/11142


Zigbee通信总结

 

内容介绍:

一、

二、绑定通信

 

一、组播

首先先看播,我们没有讲到播的东西,但是官方给的那个例子已经包含:

image.png

其中有一种通讯方式是需要设置播的名称、ID。整个的地址就是短地址,它只是设了一个ID,并没有真正的通信。ID如果是点对点通信,点拨这个地方的类型,选Addr16Bit.如果是播,地址模式就应该选择 AddrGroup。

当选择这个模式之后,端点不变,短地址就变成ID=0*0001,播的ID。除此之外没有什么区别,关键是有个函数要调一下,把当前这个节点aps_AddGroup添加到组里面去,只要是添加到组里面去的设备,往组发消息的时候,所有的节点都会收到组播的消息。

如果收不到的话,有一个问题你要去检查一下,这个文件(f8Config.cfg)这个里面有一个宏,是ALWAYS。要把 FALSE改成TRUE就可以了。

二、绑定通信

绑定通信主要的意义是方便。也就是说完成绑定后的通信过程可以不用短地址,是绑定一个非常重要的意义,所以说经常都知道在节点与节点之间通信的时候,有这么一个问题,地址由于是动态分配的, A节点不知道b节点是多少,但是可以通过绑定的方式建立起ab之间通讯关系。

即使不知道地址是多少,因为每次入网这个地址可能会变化,一旦变了之后,还是用那个地址,数据是发不发不过去的,但是有个东西是不变的,叫MAC地址。

手册里面找绑定的那个函数,应该是APS管理层bind,搜一下取消勾选全字匹配,就这个接口APSME_BindRequest。

绑定其实主要的目的就是为了方便,而且在动态分配地址的时候,不知道对方地址,通过MAC地址可以绑定去跟人家进行通信。

绑定通信它是一种本地行为,很多同学以为调用某个函数,如刚才那个函数BindRequest去绑定的时候,我是不是就给对方发了个什么东西,不是。调函数绑定,其实是完成了本节点建立绑定地址映射表,将来发数据的时候,就会从映射表里面去寻找绑定的端点和MAC地址。

如果去给绑定的对象发数据怎么办?比如把 b端节点绑定了,首先会去发送 MAC地址,其实具体原理不太清楚,是协议站去做的,有可能是有点像网络通讯里面 ARP,通过麦克地址广播出去,然后跟自己MAC地相同,再回一个短地址过来,回过来之后就可以通过短地址通信,就整个通信过程是底层去完成的,上层不用管,这就是组播,绑定,点对点东西用的要多一点简单一点。

具体更深入的东西,包括内部的实现的机制,需要通过不断的去做实验,或者是看代码,整个协议站的东西其实也不是特别多,因为它把大量的东西都放到了 library里面做成了库,就是一些无法看到的二进制文件里面,它在components,因为components是我们的组件,跟硬件相关。也没有多少代码,头文件就不用看了,这个里面就是跟我们的单片机相关的全都在这个里面,跟MAC相关代码也很少,还有具体的一些应用,对网络串口ZDO的一些应用,还有操作系统相关的osal的,东西不算是特别多,操作系统非常精简。还有一些services,协议站基本上就是按照分层af层、网络层还有系统层,还有ZDO,应用层最上层的那些东西。它生成的目标,里面是编译之后工程生成的东西,Source是经常写的这些应用程序,写的Mapp、温湿度传感器就在这里,如果要增加传感器,就往source里SampieApp里面放,ZMain是入口函数。在bin里面叫library。

相关文章
|
程序员 数据安全/隐私保护 C++
【qt】动态属性
【qt】动态属性
209 1
|
10月前
|
设计模式 存储 算法
「全网最细 + 实战源码案例」设计模式——命令模式
命令模式(Command Pattern)是一种行为型设计模式,将请求封装成独立对象,从而解耦请求方与接收方。其核心结构包括:Command(命令接口)、ConcreteCommand(具体命令)、Receiver(接收者)和Invoker(调用者)。通过这种方式,命令的执行、撤销、排队等操作更易扩展和灵活。 适用场景: 1. 参数化对象以操作。 2. 操作放入队列或远程执行。 3. 实现回滚功能。 4. 解耦调用者与接收者。 优点: - 遵循单一职责和开闭原则。 - 支持命令组合和延迟执行。 - 可实现撤销、恢复功能。 缺点: - 增加复杂性和类数量。
345 14
「全网最细 + 实战源码案例」设计模式——命令模式
|
4月前
|
人工智能 监控 数据可视化
基于YOLOv8的无人机位置捕捉识别项目|完整源码数据集
本项目基于YOLOv8构建无人机目标检测系统,集成PyQt5图形界面,支持图像、视频、摄像头等多种输入方式,具备高精度识别与实时检测能力,适用于安防监控、目标跟踪等场景。含完整训练代码、数据集及部署教程,开箱即用,适合AI学习与工程实践。
基于YOLOv8的无人机位置捕捉识别项目|完整源码数据集
|
7月前
|
Linux 编译器 开发工具
提升CentOS 7中的gcc/G++版本
至此,你已经成功在CentOS 7中升级了gcc/G++版本。从现在开始,在终端中运行 `gcc`或 `g++`时,将会使用新版本的编译器。
689 21
|
机器学习/深度学习 存储 PyTorch
PyTorch自定义学习率调度器实现指南
本文将详细介绍如何通过扩展PyTorch的 ``` LRScheduler ``` 类来实现一个具有预热阶段的余弦衰减调度器。我们将分五个关键步骤来完成这个过程。
728 2
|
11月前
|
人工智能 数据挖掘 API
R2R:开源的 RAG 集成系统,支持多模态处理、混合搜索、知识图谱构建等增强检索技术
R2R 是一款先进的 AI 检索增强生成平台,支持多模态内容处理、混合搜索和知识图谱构建,适用于复杂数据处理和分析的生产环境。
976 3
R2R:开源的 RAG 集成系统,支持多模态处理、混合搜索、知识图谱构建等增强检索技术
|
11月前
|
存储 资源调度 JavaScript
npm、cnpm 和 pnpm 是三种常用的 Node.js 包管理工具
npm、cnpm 和 pnpm 是三种常用的 Node.js 包管理工具。npm 是官方默认的包管理器,提供依赖管理、安装和更新等功能;cnpm 是由阿里巴巴开发的 npm 镜像,专为中国大陆用户优化,解决下载速度慢的问题;pnpm 通过硬链接技术提高安装速度并节省磁盘空间,特别适合磁盘资源紧张的环境。三者命令类似,但各有特色,开发者可根据需求选择合适的工具。
1162 5
|
11月前
|
前端开发 Java 开发工具
【Java】轻松解决支付宝沙箱问题。
本文详细介绍了如何使用Java实现支付宝沙箱支付功能,涵盖从环境搭建到代码实现的全过程
808 1
|
数据采集 监控 数据可视化
装备制造行业云MES解决方案
万界星空科技装备制造云MES解决方案,通过采集生产过程中的质量、设备、工艺、物料、检测等数据,为装备制造大数据分析平台的建立提供数据支持,同时,通过多个层面优化生产管理模式,将为装备制造企业实现信息平台一体化;生产计划高效协同;生产数据可视化;质量过程可追溯;生产与管理集成系统最优化。
717 0
|
Java API Spring
Springfox Swagger2从入门到精通
本文详细介绍了如何使用Springfox Swagger2在Spring Boot项目中生成API文档,包括引入依赖、配置Swagger2、启用Swagger2、编写API文档注释、访问Swagger UI以及常用注解分析和高级配置。
1095 0
Springfox Swagger2从入门到精通