ZigBee协议栈开发(六)

1、在一开始的学习中借助官方模板,添加简单的代码,做出基本通信试验,建立感性的认识,然后在官方代码基本试验基础上,了解相关的概念,掌握通信过程原理,结合自己的理解,自己动手做一个个性化试验,验证理解。

2、各种通信方式:

(1)单播:在ZigBee网络中,模块之间要进行通信,发射模块需要非常明确的知道接收模块的网络地址,以这个地址发送数给接收模块,叫单播。

ZigBee模块的地址特点:模块在入网时,父节点随机分配网络地址给子节点。但是协调器模块在网络里的地址永远是0x0000。

(2)、广播:发送模块发出的数据,这个网络中的所有节点模块都可以拿到。

广播的发送过程:终端发送模块,先定义发送的目标端点,然后定义以广播的形式发出,目标网络地址设置为网络中的所有节点。接受模块接收数据的端点为终端定义的端点(需接收模块定义),簇为终端定义的簇。

网络特性:

a.协调器创建网络之后就与网络中的路由器节点在通信过程中、功能上没有任何区别,只是协调器的网络地址永远是0x0000.

b.终端入网后,它和网络里的其他节点数据收发都要经过它的父节点转发。所以它只能与其父节点进行通信。要和其余节点交流时必须经由其父节点。

c.路由器在入网时虽然也有其父节点,但是它们发数据时,不需要父节点转发,入网后,协调器和所有路由器的通信地位是平等的。

(3)组播:在ZigBee网络中,模块可以分组来标记,发送的模块发送出的组号如果和网络中标记模块的组号对应,那么这些模块就可以拿到这些无线数据包。

分组中组编号是2个字节。组都是和模块中已经定义了的端点相关联,如果我们说1个模块标记为组1,那么这个模块里至少有一个定义了的可用的端点和组0x0001相关联。

发送的模块按照组的方式发送时,需要指定的内容有:目标模块的组编号、端口号、簇号,原则上只有这三个参数全部匹配才能拿到和处理无线数据包。

组标记中,同一个模块定义的一个组可以关联多个可用的端点,同一个端点下也可以关联多个组。

3、相关概念

(1)端点(endpoint):是1个字节编号的,数据收和发的基本单元,在模块通信时,发送模块必须指定收发双方模块的网络地址和端点。

(2)端点要使用,就必须要和模块里的某个任务挂钩定义;首先,每一个端点可以看成是1个字节数字编号的开有一扇门的房间,数据最终的目标是进入到无线数据包指定的目标端点房间,而取无线数据这个相关的代码在任务事件处理函数里;TI协议栈有很多任务事件处理函数,所以必须要指定在哪个任务事件处理函数中取这个无线数据包里面的有用数据。

(3)一个端点只能挂钩在一个任务上,而一个任务可以挂钩多个端点,且端点对所有的任务是公用的,定义一个少一个。

(4)多个事件时,可以定义多个本地端点和多个目标端点用以处理不同的事件。定义多个端点时要在代码开头定义多个结构体。发送包括两个方面:端口号和簇号。

(5)属性:在应用层有用的数据载荷中,做专门规定最小单元

猜你喜欢

转载自blog.csdn.net/x603560617/article/details/80212092