协调器周期性以广播的形式向终端节点发送数据(每隔5s广播一次),终端节点接收数据后,使开发板上的LED灯状态翻转, 同时向协调器发送字符串“EndDevice1 received!”(按组网节点数编号
【ZigBee】协调器广播&终端节点单播
- 实验简介
- 实验环境
- 实验准备
- 1.下载基本工程文件
- 2.打开工程文件
- 3.尝试编译
- 协调器
- 查看完整原文
实验简介
任务6:
协调器周期性以广播的形式向终端节点发送数据(每隔5s广播一次),终端节点接收数据后,使开发板上的LED灯状态翻转,
同时向协调器发送字符串“EndDevice1 received!”(按组网节点数编号),协调器收到终端节点发回的数据后,通过串口输出到PC机,用户可以通过串口调试助手查看该信息。
实验环境
- Win10 1909
- IAR 10.30
- Z-Stack
- VScode
实验准备
1.下载基本工程文件
首先下载最基本的工程文件,我们在这个的基础上进行代码修改。
- 下载地址:https://www.lanzous.com/i7j1gtc
- 密码:1024
2.打开工程文件
解压你第一步下载的基本工程的压缩包,路径是“…\Texas Instruments\ZStack-CC2530-2.3.0-1.4.0\Projects\zstack\Samples\GenericApp\CC2530DB”文件夹下的GenericApp.eww。
双击使用最新版IAR打开它。刚打开的时候IAR会多次提示你版本不兼容信息,不必理会,直接一路点击Ok就行。
3.尝试编译
上一步完成后,先不改动任何地方。直接点击rebuild图标或者按下F7。也就是下图的箭头指向的图标。
先看是否报错。如果报错,先参考这里【IAR-10.30.1】最新版本IAR常见编译问题总结。
按照这篇博客的方法解决问题即可。
协调器
协调器要做的事情只有三个,一个是广播消息,另一个是如果收到终端节点的消息就把消息打印到串口,第三就是同时翻转LED状态。
我们来理清一下思路:当协调器组件网络后就开始发送广播消息。那么我们就在GenericApp_ProcessEvent() 函数里添加ZDO_STATE_CHANGE的case即可。在那个case里我们需要闪烁一个LED,同时设置一个5秒的定时把SEND_TO_ALL_EVENT事件写到任务列表。
UINT16 GenericApp_ProcessEvent( byte task_id, UINT16 events )
{afIncomingMSGPacket_t *MSGpkt; //MSGpkt用于指向接收消息结构体的指针if ( events & SYS_EVENT_MSG ){//osal_msg_receive()从消息队列上接收消息MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( GenericApp_TaskID );while ( MSGpkt ){switch ( MSGpkt->hdr.event ){case AF_INCOMING_MSG_CMD:HalLedSet(HAL_LED_2,HAL_LED_MODE_OFF);HalLedBlink(HAL_LED_1,0,50,500);GenericApp_MessageMSGCB( MSGpkt );break;case ZDO_STATE_CHANGE: //建网后GenericApp_NwkState=(devStates_t)(MSGpkt->hdr.status);if(GenericApp_NwkState==DEV_ZB_COORD){HalLedBlink(HAL_LED_2,0,50,500); //LED2 闪烁 osal_start_timerEx(GenericApp_TaskID,SEND_TO_ALL_EVENT,5000);}break;default:break;}// Release the memoryosal_msg_deallocate( (uint8 *)MSGpkt );//接收到的消息处理完后,释放消息所占的存储空间// NextMSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( GenericApp_TaskID );}// return unprocessed eventsreturn (events ^ SYS_EVENT_MSG);}if(events&SEND_TO_ALL_EVENT)//数据发送事件{GenericApp_SendTheMessage();//每隔5s 向终端节点发送数据函数osal_start_timerEx(GenericApp_TaskID,SEND_TO_ALL_EVENT,5000);return (events^SEND_TO_ALL_EVENT); }// Discard unknown eventsreturn 0;
}
假定协调器发来消息,那么就去了AF_INCOMING_MSG_CMD这个case里,在那里我们需要把LED状态翻转,并通过串口输出到PC,我们可以通过串口调试助手查看该信息。
提示;上面的图片是我使用的其他图床,不是csdn的。如果图片查看不了,请移步到我的博客查看。地址是:https://stefancharles.xyz/
查看完整原文
这里不提供全文。需要全文查看请移步我的自搭建博客:
Stefan的博客
本文地址在这里
协调器周期性以广播的形式向终端节点发送数据(每隔5s广播一次),终端节点接收数据后,使开发板上的LED灯状态翻转, 同时向协调器发送字符串“EndDevice1 received!”(按组网节点数编号相关推荐
- STM32F103C8T6核心开发板下,采用串口DMA方式向上位机连续发送数据的实例详解
STM32采用串口DMA方式,用115200bps或更高速率向上位机连续发送数据 文章目录 STM32采用串口DMA方式,用115200bps或更高速率向上位机连续发送数据 前言 一.DMA应用初步 ...
- 使用esp8266 wifi芯片和DFRduino开发板(Arduino也可以),向自己的服务器发送请求(尽可能详细的说明)
研究过嵌入式方面的人都应该了解 esp8266 wifi芯片,前段时间接触一个小竞赛,需要一块传输数据给服务器的模块,毫不犹豫选择了esp8266,可能是自己孤陋寡闻吧... 进入正题 1. 开发环 ...
- 【平头哥RVB2601开发板试用体验】AT解析器和通过w800 AT命令接入阿里云生活物联网平台
作者:niu 在RVB2601开发板上,CH2601主芯片通过SPI接口和W800 WIFi/BLE模块通信,W800芯片在此接口上提供AT命令的方式供主芯片使用W800的功能. 根据<W800 ...
- Linux开发板怎么用madplay,Linux中madplay 音乐播放器移植步骤
madplay 音乐播放器移植步骤 madplay版本: madplay-0.15.2 交叉编译器版本: arm-linux-gcc 3.4.1 操作系统平台: Linux -- Red Hat 9. ...
- 痞子衡嵌入式:飞思卡尔Kinetis开发板OpenSDA调试器那些事(上)- 背景与架构
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis MCU开发板板载OpenSDA调试器(上篇). 众所周知,嵌入式软件开发几乎离不开调试器,因为写一个稍有代码规模 ...
- 基于Basys2开发板的简易电子琴和音乐播放器设计
背景:华中科技大学 电测综合实验 主要功能:Basys2开发板外接一个扬声器(或无源蜂鸣器也可)实现电子琴和音乐播放器的功能.其中由于开发板上只有4个按键,所以电子琴功能只做了4个音调,分别对应于4个 ...
- Qt+MPlayer音乐播放器开发笔记(二):交叉编译MPlayer以及部署到开发板播放演示
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/119991329 长期持续带来更多项目与技术分享,咨询请 ...
- 使用外部调试器仿真LPC845-BRK开发板
NXP这款新的LPC845-BRK开发板的一个好处就是它可以与任何标准的SWD / JTAG调试器一起使用,因为它板载了一个10针的调试插头.默认情况下没有焊接,因为LPC845-BRK开发板已包含了 ...
- arduino向串口发送数据时掉包_[技术]清楚简单,一种串口触摸屏的开发流程和方法介绍...
1.什么是串口触摸屏 触摸屏是工业控制上很常见的人机交互部件,很多设备.系统都在使用它,它至少有两个功能:显示,触摸控制. 串口触摸屏是采用串行数据通信协议进行数据交换的触摸屏,具有简单.可靠.易于操 ...
- 网络——在网络上发送,接收数据
问题 创建并加入一个网络会话是一回事,但如果不能发送或接收任何数据那么网络会话有什么用呢? 解决方案 当玩家连接到会话时,你可以在一个PacketWriter流中存储所有想要发送的数据.完成这个操作后 ...
最新文章
- 矩阵相乘原理与C实现(实矩阵)
- PAT甲级1112 Stucked Keyboard:[C++题解]卡住的键盘、双指针、去重
- mysql的extract_mysql中json_extract函数的使用?作用是什么?
- 如何快速获取properties中的配置属性值
- Ubuntu 18.4 镜像
- Julia 语言可重用性高竟源于缺陷和不完美?
- 第12章 正则表达式与文件格式化处理
- shell 传递参数
- Atitit图像识别的常用特征大总结attilax大总结
- BZOJ1812: [Ioi2005]riv(树形dp)
- 磁共振中的T1, T2 和 T2*的原理和区别
- Python:实现zellers congruence泽勒一致算法(附完整源码)
- 电脑ppt录制微课软件哪个好 电脑ppt录制微课的方法
- 如何顺利接手一个中途的项目
- s:if test标签出错,内容不显示
- matlab筛选excel数据统计,#excel筛选数据#如何用excel表格中的数据制图
- suma服务器 硬盘安装,[Server] HP DL380 G6更新esxi6.0 SATA 硬盘掉线问题
- 关于Autodesk软件安装问题
- Arcmap转nc文件为TIFF格式(以逐月降水量数据集转年均数据为例)
- HPE DL380 Gen10 服务器远程升级ESXi6.0到ESXi6.7
热门文章
- 如何设置word的有效期
- 敏捷项目管理术语大全
- python中字符串以什么结尾_python判断字符串以什么结尾的实例方法
- 【数据仓库与OLAP技术】期末复习+考题
- 小程序中的image标签
- 5G和4G有那些区别
- 新安装的Eclipse,出现英文乱码,标题窗口英文乱码,打开的Java类窗口显示名称出现乱码
- python中复选框取消修改_Python tkinter复选框双重检查/取消选中(Python tkinter Checkboxes double check/uncheck)...
- dlna android播放器,dlna音乐播放器app
- 虚拟光驱传文件到服务器,虚拟光驱服务器