ZigBee协调器和终端通信
本文主要记录了协调器和终端通信,完成LED灯的变化,具体为:协调器轮询接收终端发的数据,终端开不开发送都可以,协调器一定要开,终端才会收到。
#if defined(ZDO_COORDINATOR) //协调器收到"D1"后,返回"D1"给终端,让终端Led1也闪烁
SampleApp_SendPeriodicMessage();
#endif
即:以上代码,在通信时终端开不开都可以,协调器一定要开。
ZigBee主要流程如下:
1、执行main()函数;
2、main()函数调用 osal_init_system(); //初始化操作系统
3、初始化操作系统中调用 osalInitTasks(); //初始化系统任务
4、初始化系统任务中定义 tasksEvents 存放任务ID的缓冲区,(uint16 * tasksEvents )
5、初始化系统任务中定义 taskID ,标示一个任务,高优先级对应的taskID反而低,(uint8 taskID )
6、初始化系统任务中调用 SampleApp_Init( taskID ) //用户创建任务
7、创建任务中分配任务ID,// SampleApp_TaskID = taskID; //osal分配的任务ID随着用户添加任务的增多而改变
8、初始化操作系统完成。回到main()函数。
9、main()函数调用osal_start_system(); // No Return from here 执行操作系统,进去后不会返回
10、扫描事件,得到优先级高的任务ID,tasksEvents[idx] ,idx=优先级最高的taskID.
11、 (tasksArr[idx])( idx, events );//通过指针调用任务处理函数,关键。tasksArr[idx]是一个数组,里面存放了一个函数SampleApp_ProcessEvent(idx, events)。
12、执行SampleApp_ProcessEvent ( uint8 task_id, uint16 events ) //用户应用任务的事件处理函数。
13、判断事件为接收事件,
// Received when a messages is received (OTA) for this endpoint
case AF_INCOMING_MSG_CMD://接收数据事件,调用函数AF_DataRequest()接收数据
SampleApp_MessageMSGCB( MSGpkt );//调用回调函数对收到的数据进行处理
14、执行
//接收数据,参数为接收到的数据
void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
15、LED灯变化,
16、调用SampleApp_SendPeriodicMessage()发送数据到终端。
17、继续扫描任务,运行OS。
ZigBee协调器和终端通信相关推荐
- 基于Zigbee的SHT10温湿度数据采集系统(已实现控制12个终端节点)——Zigbee协调器主要代码解析
之前实现了基于Zigbee的SHT10温湿度数据采集系统,这里来重新复盘一些主要的知识和代码. 写在前面: 1 功能介绍:使用Zigbee终端节点采集环境的温度和湿度数据,然后将数据无线发送的Zigb ...
- 使用zigbee的协议栈进行协调器路由器终端初始化
实验目的: 使用协议栈,外加自己写的数码管的代码模块 配置协调器路由器终端,各自对应数码管数字C,R,E. 本身不是很细致,只是把一些重要步骤截了一下,IAR工程什么的默认大家都会了. zigbee协 ...
- 组一个包括协调器路由器终端节点的zigbee网络,通过串口能获取它们的拓扑结构。
组一个包括协调器路由器终端节点的zigbee网络,通过串口能获取它们的拓扑结构. 实验简介 实验环境 实验准备 1.下载基本工程文件 2.打开工程文件 3.尝试编译 路由器和终端节点 查看完整原文 旧 ...
- ZigBee协调器,ZigBee智能节点盒
新设备下 1.安装CP210xVCPInstaller_x64.exe串口驱动 2.连接USB转串口,RS485转232,蓝色数据线连ZigBee协调器485A,黄色数据线连ZigBee协调器485B ...
- ZIGBEE 协调器(刷写程序后)PAN_ID+1,与原来路由器无法组网
ZIGBEE 协调器(刷写程序后)PAN_ID+1,与原来路由器无法组网 原因:或许是你下载时,勾选了Erase flash选项,如下图 原因简析 原因:或许是你下载时,勾选了Erase flash选 ...
- TI CC2538 做ZigBee协调器控制飞利浦 Hue 调色灯
[源码.文档.软件.硬件.技术交流.技术支持,入口见文末] 一.实验准备 1.1 硬件准备 1.1.1 CC2538 模块 本文中使用的 CC2538 模块是带 PA 芯片(CC2592)的.此外,最 ...
- Zigbee协调器主动使终端节点退网
我使用ZDP_MgmtLeaveReq()这个函数来让已知短地址的终端退网,代码如下:我这样使用的结果是,可以将节点退网,节点上也需要做一些配置.我在函数里禁止节点重连,但是节点退网后会获取到新的短地 ...
- ZigBee协调器向子节点发消息
在一般的ZigBee教程中,子节点如何向协调器发送消息已经被描述得非常清楚了,即子节点直接使用API向地址为0x0000的协调器发送消息即可.用到的函数如下: afStatus_t AF_Data ...
- mesh 协调器 路由器_关于zigbee协调器(单播方式)传输数据给网络中的多个路由器丢失数据包的问题?...
问题描述:建立一个mesh网络,网络中只存在协调器和路由器节点,并不存在Endevice终端节点.整个网络大概存在20多个路由节点,一个协调器. 路由器节点和协调器都加入和NV存储,所以路由节点掉电后 ...
- Z-Statk协调器 路由器 终端的确定---Simple例程(一)
当我们选择了终端.路由器.或者协调器的时候,来看一下程序中是怎么判断的.也就是如何作为其中的各个角色进行启动,是加入网络,还是形成网络.因为我们在这三个设备上使用的一套代码.首先,我们可以看到 ...
最新文章
- 读取本地照片 以流的形式进行显示
- 【直播】张晋:心跳信号分类模型融合
- 【Android开发教程】一、基础概念
- css03层次选择器
- 一个关于Integer的秘密
- (技能篇)双机热备之Oracle切换故障处理
- armv7 cortex a系列编程手册_STM32、Cortex-M3和ARMv8-M之间的关联
- CondenseNet总结
- npm 删除依赖包_npm 和 yarn 你选哪个?
- Java中七个潜在的内存泄露风险,你知道几个?
- 解决方案:System.InvalidOperationException: 此实现不是 Windows 平台 FIPS 验证的加密算法的一部分。
- 300.最长上升子序列
- Eclipse+Java+Swing实现学校教材管理系统
- linux node安装菜鸟教程,手把手告诉你如何安装多个版本的node
- smtp协议支持身份认证与不认证两种状态。
- Mysql基础篇(3)—— MySQL数据库类型
- 苏如是:香港中鼎资本与您分享“数实共生世界”和“后人类社会”
- unity 双指触控(以及多指触摸的代码原理分析)
- 数据结构 严薇敏 队列 的实现及其使用方法详解
- 史上最详细唇语识别最新研究进展记录
热门文章
- mysql获取姓名拼音首字母_C# 汉字获取拼音首字母,给数据库中的姓名添加首字母...
- halo输入QQ号获取QQ头像和名称
- IPCAS1.2.11安装步骤
- S2B2B-云分销系统介绍
- 百度地图API仿链家地图找房 聚合开发 js实现
- 新标准的发布关联的液相色谱-三重四极杆质谱技术的联用
- 如何修复rpc服务器,打印时弹出RPC服务器不可用修复教程
- 在Power BI中如何计算同比增长?
- 基于JavaEE的办公OA系统的设计与实现
- python按顺序执行函数_Python3的unittest用例按编写顺序执行