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】动态属性
178 1
|
8月前
|
设计模式 存储 算法
「全网最细 + 实战源码案例」设计模式——命令模式
命令模式(Command Pattern)是一种行为型设计模式,将请求封装成独立对象,从而解耦请求方与接收方。其核心结构包括:Command(命令接口)、ConcreteCommand(具体命令)、Receiver(接收者)和Invoker(调用者)。通过这种方式,命令的执行、撤销、排队等操作更易扩展和灵活。 适用场景: 1. 参数化对象以操作。 2. 操作放入队列或远程执行。 3. 实现回滚功能。 4. 解耦调用者与接收者。 优点: - 遵循单一职责和开闭原则。 - 支持命令组合和延迟执行。 - 可实现撤销、恢复功能。 缺点: - 增加复杂性和类数量。
243 14
「全网最细 + 实战源码案例」设计模式——命令模式
|
机器学习/深度学习 存储 PyTorch
PyTorch自定义学习率调度器实现指南
本文将详细介绍如何通过扩展PyTorch的 ``` LRScheduler ``` 类来实现一个具有预热阶段的余弦衰减调度器。我们将分五个关键步骤来完成这个过程。
646 2
|
9月前
|
前端开发 Java 开发工具
【Java】轻松解决支付宝沙箱问题。
本文详细介绍了如何使用Java实现支付宝沙箱支付功能,涵盖从环境搭建到代码实现的全过程
620 1
|
数据采集 监控 数据可视化
装备制造行业云MES解决方案
万界星空科技装备制造云MES解决方案,通过采集生产过程中的质量、设备、工艺、物料、检测等数据,为装备制造大数据分析平台的建立提供数据支持,同时,通过多个层面优化生产管理模式,将为装备制造企业实现信息平台一体化;生产计划高效协同;生产数据可视化;质量过程可追溯;生产与管理集成系统最优化。
666 0
|
机器学习/深度学习 PyTorch 数据处理
数据增强与 DataLoader:提升模型泛化能力的策略
【8月更文第29天】在深度学习中,数据的质量和数量对于模型的性能至关重要。数据增强是一种常用的技术,它通过对原始数据进行变换(如旋转、缩放、裁剪等)来生成额外的训练样本,从而增加训练集的多样性和规模。这有助于提高模型的泛化能力,减少过拟合的风险。同时,`DataLoader` 是 PyTorch 中一个强大的工具,可以有效地加载和预处理数据,并支持并行读取数据,这对于加速训练过程非常有帮助。
1101 1
|
SQL 存储 Oracle
TDengine 3.3.2.0 发布:新增 UDT 及 Oracle、SQL Server 数据接入
**TDengine 3.3.2.0 发布摘要** - 开源与企业版均强化性能,提升WebSocket、stmt模式写入与查询效率,解决死锁,增强列显示。 - taos-explorer支持geometry和varbinary类型。 - 企业版引入UDT,允许自定义数据转换。 - 新增Oracle和SQL Server数据接入。 - 数据同步优化,支持压缩,提升元数据同步速度,错误信息细化,支持表名修改。 - 扩展跨平台支持,包括麒麟、Euler、Anolis OS等。
328 0
|
应用服务中间件 Apache nginx
伪静态配置指南及示例
【7月更文挑战第8天】伪静态(也称URL重写或URL美化)是一种Web服务器技术,用于将动态页面的URL伪装成静态页面的URL形式,以此改善搜索引擎优化(SEO)、提高用户体验及隐藏技术实现细节。本文将介绍如何在Apache和Nginx两种常用的Web服务器上配置伪静态规则。
1131 0
|
C++
【洛谷 P1739】表达式括号匹配 题解(栈)
该编程题目要求检查给定的包含字母、运算符和括号的表达式是否括号匹配。输入为一行表达式,以`@`结束。如果括号匹配,输出`YES`,否则输出`NO`。样例包括一个匹配和一个不匹配的表达式。解决方案是使用栈,遇到左括号入栈,遇到右括号时判断栈是否为空,栈空则输出`NO`,否则出栈。当读到`@`时,栈空则输出`YES`,否则输出`NO`。提供的AC代码使用C++实现,通过`stack`处理括号匹配。
306 0
|
算法 Java 数据库连接
【分库分表】基于mysql+shardingSphere的分库分表技术
【分库分表】基于mysql+shardingSphere的分库分表技术
618 0