http://blog.chinaunix.net/u3/104447/showart_2416888.html
Packet Sniffer 是一款专门的协议分析软件,可以对PHY 、MAC 、NETWORK/SECURITY 、APPLICATION FRAMEWORK 和APPLICATION PROFOCES 等各层协议上的信息包进行分析和解码;显示出错的包以及接入错误;指示触发包;在接收和注册过程中可连续显示包,可以利用Packet Sniffer 分析ZigBee 建立网络,加入网络,发送数据,接收数据的过程,需要注意的是,Packet Sniffer 只能起到侦听的作用,即它只能侦听设备发送的数据。
我购买的了三个开发板,只有一个可以做协议分析议,其用法就是在SampleApp 例程的基础之上,一个作为协调器,一个作为路由器,另一个做协议的分析议,做分析议的模块要连接PC--- 仿真器---- 开发板,然后打开Packet Sniffer 软件,在刚打开软件还没有形成网络时会出现下面的分析得到的画面。
1 软件介绍
Packet Sinffer 侦听到的数据包将被保存在硬件的缓存中,所能保存的数据包总数与数据包的大小和硬盘空间有关。在操作过程中,数据包暂时存放在RAM 中,以减少数据包信息在GUI 上显示时间。下面是Packet Snifferr 的数据流。具体怎么使用可以查看自带的数据手册。
这里就以SampleApp 的例程来看看,这个分析议是怎么使用的,首先,介绍一下这个例程的主要功能,这个程序有两个模块组成,也就是最简单的那种,其中一个是协议器,一个是路由器,当两个模块都上电后,如果一切正常的话,绿色的灯会点亮,这时按下路由器上的SW1 按键就可以从路由器发送一句话“Welcom to ZigBee !”, 这时在按下协调器上的SW1 按键就可以发送给路由器发送一条“Thank you! ”。当接收到数据时,两个模块的红色灯会闪烁。这就是这个例程经过简单的更改后所具备的功能。
在ZigBee 网络中,各个设备都必须在加入网络之后才能完成数据的通信,所以,加入网络是每一个设备的首先要做的。
在协议分析仪中显示的数据,第2 行到第7 行是建立一个网络的过程,在这里可以看出在网络层管理实体一旦选择了一个PAN 标识符,就会立刻选择一个0x0000 的16 位网络地址,并且设置MAC 层的macShortAddress PIB 属性,使其等于所选择的网络地址。
第8 行中,源地址是路由器的物理地址0x1716151413120030 ,它的PANID 没有确定为0xFFFFF, 这时的路由器还没有加入网络,所以还没有网络地址,目的地址为协调器的网络地址0x0000 ,它的PANID 为0x0022 ;它的命令是联合方式加入请求。所以该行表示的意思是向协调器发送联合方式加入请求,发送完成后将得到一个应答,也就是第9 行。
收到应答以后,路由器开始加入网络,在收到应答以后,协调器开始为路由器分配网络地址,从第12 行可以看出,路由器分配到的网络地址为0x0001 。这样就完成了整个建立、加入网络的过程,并分配了各自的网络地址。
下面是NWK 层数据包
网络层数据包中,体现了在网络层中的数据以及格式,。网络层中也体现了源地址和目的地址与APS 层基本相同。它们最大的不同是数据中加入了网络层包,附加了网络层数据。
数据包第1 行,路由器的网络地址(0x0001 )作为数据源地址发送,目的地址为0xFFFF 表示路由器是以广播的形式发送数据。可以看出该数据包反映路由器广播发送数据。在APS 层中详细列举了剖面 ID (APS Profile ID )、串ID (APS Cluster ID )、广播深度(Broadcast Radius )等数据。另外发送的数据也在此项显示。在第一行中的APS Payload 部分就显示了数据帧头加上路由器发送的广播数据,在这里是以16 进制数显示的,在数据包的结尾有RSSI 强度值。
我们可以从 APS Payload 中可以看到从路由器和协调器发出来的数据,这些都是以 16 进制的形式出现的。在 MAC Payload 和 NWK Payload 中可以看到在发送的数据前面,都添加的该层有数据。
下面两个是帧控制域中各个位表示的含义:
路由器按下按键 SW1 以广播的形式发送一串数据“ Welcom to ZigBee! ”,数据包中的第 1 行网络地址为 0x0001 的设备为源地址,即表示发送数据设备的地址,由于是广播发送,所以在发送完成以后,每一个在网络中的设备都能收到数据。在 APS 层中有一个参数是路由深度为 0x0A ,所以在协调器收到数据以后,会以路由的方式转发这个数据,数据包显示在第二行就是转发的数据的数据格式,也就是为什么会有两个一样的数据包出现的原因。在协调器收到数据并转发了数据以后,在路由器上按下 SW1 按键将发送一个应答数据“ Thank you! ” .