《物联网系统设计与应用开发》课件5-4 任务4 组播通信_第1页
《物联网系统设计与应用开发》课件5-4 任务4 组播通信_第2页
《物联网系统设计与应用开发》课件5-4 任务4 组播通信_第3页
《物联网系统设计与应用开发》课件5-4 任务4 组播通信_第4页
《物联网系统设计与应用开发》课件5-4 任务4 组播通信_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录任务目标01相关知识点02任务实施03任务目标(1)掌握组播通信。(2)掌握按键操作。任务2:组播通信本任务实现组播通信:各节点之间以组播方式发送数据,只有同组的节点可以接收和发送数据,组播通信原理图如图所示。组播通信原理图任务2:组播通信本任务实现的具体功能:一个节点做协调器,另外两个节点做终端。按终端S1键时,协调器Led2状态改变,同时终端自身的Led2状态也改变,提示发送成功。修改其中一个终端的组编号,编译下载后,按此终端S1键时,此时看协调器Led2状态是否会改变。组播通信协调器程序和终端程序流程图如图所示。协调器程序流程图 终端程序流程图相关知识点组播定义在apsgroups.h文件中有aps_Group_t结构体的定义,如下所示:#defineAPS_GROUP_NAME_LEN16typedefstruct{uint16ID;uint8name[APS_GROUP_NAME_LEN];}aps_Group_t;每个组有一个特定的ID,然后是组名,组名存放在name数组中。注意:name数组的第一个元素是组名的长度,从第二个元素开始存放真正的组名字符串。在程序中可以使用如下方法定义一个组。1aps_Group_tSampleApp_Group;2SampleApp_Group.ID=0x0001;3SampleApp_G[0]=7;4osal_memcpy(&(SampleApp_G[1]),"Group1",7);5aps_AddGroup(SAMPLEAPP_ENDPOINT,&SampleApp_Group);第1行,定义了一个aps_Group_t类型的变量SampleApp_Group。第2行,将组ID初始化为0x0001。第3行,将组名的长度写入name数组的第1个元素位置处。第4行,使用osal_memcpy()函数将组名“Groupl”拷贝到name数组中,从第2个元素位置处开始存放组名。第5行,使用aps_AddGroup()函数使该端口加到组中。相关知识点其中,aps_AddGroup()函数原型如下:aps_AddGroup(uint8endpoint,aps_Group_t*group);这些协议栈已经帮我们实现了,打开SampleApp.c文件,搜索SampleApp_Group,可以找到组定义,如图所示。

组播定义相关知识点组播通信流程(1)在Coordinator.c文件中添加头文件:(2)定义组播结构体变量aps_Group_tGenericApp_Group;(3)在GenericApp_Init(uint8task_id)中初始化:GenericApp_Group.ID=0x0001;//组号osal_memcpy(GenericApp_G,“Group1”,6);//组名(4)当网络状态发生变化时,加入组aps_AddGroup(GENERICAPP_ENDPOINT,&GenericApp_Group);//将端口加入组任务开发实施步骤(1)找到初始化函数GenericApp_Init(),加上红框代码

(2)找到任务事件处理函数GenericApp_ProcessEvent()函数,加上按键事件处理.

任务开发实施步骤(3)找到消息处理函数GenericApp_MessageMSGCB()

任务开发实施步骤(4)按键处理函数

任务开发实施步骤(5)发送消息函数(组播发送)

任务开发实施步骤(6)添加几个变量

任务开发实施步骤(7)添加头文件(8)添加组播簇ID任务开发实施步骤(9)函数声明(10)GenericApp.h文件添加簇任务开发实施步骤任务结果操作步骤(1)编译程序下载到三个节点中,一个协调器,一个路由器,一个终端。(2)终端节点按下S1按键,发送组播数据,成功则终端D2灯翻转,协调器收到数据后协调器的D2灯同时翻转。(3)按下协调器S2按键,退出组,则终端再按下S1按键,协调器收不到数据,D2灯不变化。注意:协调器发送组播信息时,

终端节点收不到组播的数据,只有路由器能收到。什么原因呢?原因:协议栈规范里面规定,睡眠中断不接收组播信息,如果一定要接收的话,只有将终端的接收机一直打开,这样就可以接收到了。具体做法为:将f8config.cfg配置文件中的:-RFD_RCVC_ALWAYS_ON=FALSE改为:-RFD_RCVC_ALWAYS_ON=TRUE就可以了。拓展作业:改为协调器发送数据,终端接收数据,收到数据后D2灯翻转。程序下载到三个节点中,协调器、路由器、终端各一个,协调器按下S1按键,其他两个节点上D2灯同时翻转。感谢观看THANKYOUPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontentto

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论