一、单播通信理论

(1)Zigbee网络通信方式有4种:单播,广播,组播,绑定(MAC)。

(2)单播通信的特点:在Zigbee网络里,模块之间要进行通信,发射模块要明确知道接收模块的网络地址。

(3)Zigbee模块的地址特点:模块在加入网络的时候,父节点随机分配网络地址给子节点。但是协调器模块在)网络里的地址永远都是0x00。

单播发送数据需要明确的信息
(1)目标地址
(2)目标端点与簇
(3)要发送的数据大小

应用任务层数据发送函数

该函数在GenericApp.c里的GenericApp_SendTheMessage函数里:

AF_DataRequest(&GenericApp_DstAddr, //目标的网络地址指针&GenericApp_epDesc,//端点描述符指针GENERICAPP_CLUSTERID,//目标簇(byte)osal_strlen( theMessageData ) + 1,//发送数据的大小(byte *)&theMessageData,//发送数据缓冲区的地址&GenericApp_TransID,//这是个全局变量,用来保存发送的次数AF_DISCV_ROUTE, AF_DEFAULT_RADIUS );//发送路径,don't care

网络地址结构体

网络地址结构体就是定义在GenericApp.c前面的一个结构体变量,该类型为afAddrType_t,系统已经默认定义了一个网络地址结构体变量GenericApp_DstAddr,我们可以在GenericApp_Init()函数中,对网络地址结构体变量的成员进行赋值。

//网络地址结构体:
typedef struct
{union{uint16      shortAddr;//网络地址ZLongAddr_t extAddr; //MAC地址} addr;afAddrMode_t addrMode;//通信模式byte endPoint; //指定的端点uint16 panId;  //don't care
} afAddrType_t;
//通信模式枚举类型:
typedef enum
{afAddrNotPresent = AddrNotPresent,//当前不确定afAddr16Bit      = Addr16Bit,//单播通信模式afAddr64Bit      = Addr64Bit,//MAC通信模式afAddrGroup      = AddrGroup,//组播通信模式afAddrBroadcast  = AddrBroadcast//广播通信模式
} afAddrMode_t;

二、端点与簇

1.端点

(1)通常发送的数据要明确该数据是给接收模块的哪个任务层用的,而这个就是用端点来指定的

(2)端点是一个字节的编号,通常为定义在GenericApp.h中的一个宏。端点必须要与任务层绑定,而这个就是用端点描述符来实现的。

(3)端点描述符是一个结构体变量,该变量定义在GenericApp.c开头,我们也可以定义新的端点描述符。该结构体的类型为 endPointDesc_t,系统也默认定义了一个端点描述符GenericApp_epDesc。

(4)我们可以在 GenericApp_Init()函数中,把新的端点描述符变量赋值,使新的端点与某个任务层绑定。

//端点结构体类型:
typedef struct
{byte endPoint;//端点的值byte *task_id;  //与端点绑定的任务层IDSimpleDescriptionFormat_t *simpleDesc;//端点的描述信息,don’t careafNetworkLatencyReq_t latencyReq;//don’t care
} endPointDesc_t;

2.簇

(1)在接收模块中,每个任务层可以对不同种类的数据采取不同的处理方式,这里的数据种类就是簇(CLUSTER)

(2)在发送模块中,簇是定义在GenericApp.h中的一个宏,我们也可以定义新的簇。

(3) 系统也默认定义了一个簇 GenericApp_CLUSTERID,在GenericApp.h中

三、 应用任务层数据发送接收API

(1)该函数为GenericApp.c中的void GenericApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )

(2)在switch语句中可以定义对不同的簇采用不同的方式处理数据

(3)该函数中的pkt->cmd.Data就是接收数据的首地址

ZigBee单播通信相关推荐

  1. ZStack通信(Zigbee协议栈通信)

    ZStack通信-Zigbee协议栈通信 一.注册端点 二.发送数据函数 三.接收数据 一.注册端点 应用都是建立在端点ZDO(Zigbee Device Object)之上的, 所以要实现通信首先要 ...

  2. zigbee单播丢包测试(CC2530,ZSTACK)

    之前写过一个zigbee数据测试,由于当时对zigbee理解的很浅,所以写的代码丢包严重.最近为了提高数据传输的可靠性,改进了一下通信的方式,结果还不错. 之前:协调器+普通终端节点,协调器广播,节点 ...

  3. 单播通信、主播通信和广播通信

    单播 简介 单播(unicast)是指封包在计算机网络的传输中,目的地址为单一目标的一种传输方式.每次只有两个实体相互通信,发送端和接收端都是唯一确定的.它是现今网络应用最为广泛,通常所使用的网络协议 ...

  4. ZigBee串口通信

    一.串口通信原理 1.什么是UART ​ UART : Universal Asynchronous Receiver/Transmitter 通用异步收发器 ​ 一种常用也是最简单的串行数据传输协议 ...

  5. ZigBee TI ZStack CC2530 4.14 广播通信

    [配套源码.文档.软件.硬件等资源,入口见文末] 前面两节中,我们详细介绍了ZigBee的第一种无线通信方式--单播:本节中,我们将介绍ZigBee的第二种无线通信方式--广播. (仅描述与单播通信不 ...

  6. 关于arduino和zigbee串口16进制通信问题

    2019独角兽企业重金招聘Python工程师标准>>> 这几天我做毕业设计遇到的问题.这个问题就是我的uno板子怎样和zigbee通信起来.先说说我的思路,把uno做成一个网关,从而 ...

  7. contiki学习笔记(四)、contiki系统UDP通信原理(单播、多播、RPL介绍)

    (1).simple_udp_register()函数 contiki\core\net\ip /*该函数简化contiki系统中基于UDP协议的Socknet接口操作,函数体中包含了udp_new( ...

  8. Zigbee安全概述

    一.Zigbee概述 随着物联网(IoT)行业的发展,越来越多的无线技术应运而生. 众所周知,在物联网行业中,我们有两种典型的网络.一个是WAN(广域网),另一个是PAN(个人区域网). 对于LoRa ...

  9. zigbee学习参考(1~42 )

    [原创]ZigBee学习之1--SPI&LCD - 小组 - EDN China [原创]ZigBee学习之2--SPI&LCD - 小组 - EDN China ZigBee学习之3 ...

  10. Zigbee安全漏洞分析

    1. 摘要 ZigBee被认为是一种安全的通信协议.它的安全体系结构是对IEEE 802.15.4标准提供的安全服务的补充.ZigBee提供的安全服务范围包括:安全密钥建立.安全密钥传输.通过对称加密 ...

最新文章

  1. python 终止、结束、退出 代码
  2. java多递归调用_java – 递归调用方法
  3. 敏捷个人:激励   2011-11-26期
  4. 解决:Sublime Text3 packagecontrol.io 无法访问的问题
  5. 开工大吉!送你一份「远程工作约定」
  6. MySQL进阶之索引
  7. jdk8新特性(接口新特性、lambda表达式、方法引用、函数式接口、Stream流)和单例设计模式
  8. mysql数据表最高速迁移,mysql的存储引擎为:myisam
  9. 浅谈智能电能表的远程预付费 系统设计
  10. 计算机连接不上网络交换机,解决某些计算机在连接到路由器(交换机)后无法访问互联网的问题...
  11. 2021年中国驴行业存栏量延续下降走势,存栏基数降低使得驴肉供应减少,价格持续走强[图]
  12. autojs联众识图
  13. x64dbg 基本使用技巧
  14. Fedora的U盘无法格式化
  15. java实现将多个word文档合并
  16. python星座属相查询_python的生肖和星座计算函数
  17. Ubuntu 18.04 LTS 命令行方式安装中文语言包
  18. postgresql 通过制作函数实现16进制转换为10进制
  19. Java的jdk配置成功,但是输入java -version等,命令行没有任何反应
  20. JCJC错别字检测系统API接口使用文档-添加黑名单、白名单词汇

热门文章

  1. 苹果手机怎么连接不了无线网络连接服务器,苹果手机连接wifi显示无互联网连接怎么办?...
  2. html5这什么意思,html5是什么意思?html5和html的区别介绍
  3. 6. ROS编程入门--路径跟随(Trajectory following)
  4. Python爬取有道词典
  5. 6.3深度优先遍历和广度优先遍历
  6. Fins源代码欧姆龙通讯 OneApiConnect
  7. 3D建模就业前景如何?
  8. linux 关机 日志记录,linux查看开关机记录
  9. python多项式求导_OO博客作业1:多项式求导作业总结
  10. 调用微信扫一扫接口---实现二维码扫描(微信浏览器)