图 2 SAPP_Device.h 功能配置
4. 本实验主要任务
实验中我们将在ZigBee 节点上添加一个“功能”,其主要作用就是周期性的通过串口输出字符串“Z-Stack for SunplusAPP”。按照上面的描述,首先我们需要在SAPP_Device.h 文件中的枚举类型中新增一个功能类型,例如图 3 所示。
图 3 增加功能类型
同时,在下面的“#if !defined( ZDO_COORDINATOR ) && !defined( RTR_NWK )”和“#endif”之间添加一个新的宏定义,以便可以在编译时在多种功能之间方便做出选择,如图4 所示。
图 4 添加宏定义
然后,在SAPP_Device.c 文件中,根据需要编写相应的处理函数,在本实验中,需要编写超时处理函数,以便可以周期性完成发送字符串的功能,如图 5 所示的代码。
图 5 添加虚拟功能对应的函数
该函数完成的功能非常简单,利用Z-Stack APP 提供的SendData 函数,发送TEST_STRING 字符串到协调器的透传端点,协调器的透传端点则将会把该字符串通过串口传递到外部。
最后,在funcList 数组中的任意位置,添加功能信息,如图 6 所示的代码。
图 6 在funcList 数组中添加功能信息
【程序流程图】
程序流程图如图 7 所示。
四、实验步骤
1. 本实验需要用到两个节点,一个作为协调器,另一个作为测试节点(在本实验中使用路由器节点来担任此角色),定期发送字符串给协调器;
2. 首先使用Mini USB 延长线将ZigBee 网关的Mini USB 接口连接至PC 机的USB 接口,并将2对USB232针用跳线帽短接;
3. 将调试器一端连接至PC 的USB 接口,另一端的10pin 排线连接到协调器节点的调试接口(JTAG);
4.打开配套代码中的ZStack-CC2530\\Projects\\SappWsn\\SappWsn.eww 工程文件;
5. 在“ Tools ” 组中, 找到“ f8wConfig.cfg ” 文件, 双击打开, 并找到大概第59 行的“ -DZAPP_CONFIG_PAN_ID=0xFFFF ” , 将其中的“ 0xFFFF ” 修改为其他值, 例如“0x0010”(大家都统一修改为与你的PC编号一致),需要注意的是,每一个实验箱应当修改为不一样的PAN_ID: 在工程目录结构树上方的下拉列表中,选择“CoordinatorEB”; 7. 点击工具栏中的“Make”按钮,编译工程; 8. 等待工程编译完成,如看到警告,可以忽略;
9. 在工程目录结构树中的工程名称上点击鼠标右键,选择“Options”,在弹出的对话框中选择左侧的“Debugger”,在右侧的“Driver”列表中选择“Texas Instruments”;10. 点击“Download and Debug”按钮; 11. 待程序下载完毕后,点击“Go”按钮,使程序开始运行; 12. 点击工具栏中的“Stop Debugging”,退出调试模式;
13. 将调试器一端的10pin 排线连接到另一个节点(终端节点)的调试接口(JTAG);
14. 在工程目录结构树上方的下拉列表中,选择“EndDeviceEB”; 15. 在“SAPP_Device.h”文件中,取消“HAS_TESTFUNCTION”的注释,并保证其他的功能均被注释;
16. 点击工具栏中的“Make”按钮,编译工程; 17. 等待工程编译完成,如看到警告,可以忽略;
18. 在工程目录结构树中的工程名称上点击鼠标右键,选择“Options”,在弹出的对话框中
选择左侧的“Debugger”,在右侧的“Driver”列表中选择“Texas Instruments”;
19. 点击“Download and Debug”按钮;
20. 待程序下载完毕后,点击“Go”按钮,使程序开始运行;
21. 稍等片刻,可以看到测试节点的LED 灯闪烁,表示正确加入到协调器组建的Zigbee 网络;
22. 打开“\\Zigbee 调试助手”文件夹下的ZSAPP Assistant V2.0.3B.exe 程序;
23. 在“串口”列表中选择协调器使用的串口号(在设备管理器中查看),在本例中,使用的是COM3;
24. 点击“打开”按钮,启动Zigbee 网络助手,等待片刻,应当可以看到主界面中显示的是Zigbee 网络的拓扑结构,其中,没有名称的红色节点即为测试节点;
25. 点击没有名称的红色节点,可以打开节点详细信息页面; 26. 在“最近的数据”一栏,可以看到测试节点发送过来的数据。
五、实验心得
本次实验是Z‐Stack 协议栈工作原理的认识,通过实验,了解到Z-Stack
协议栈工程文件的组织结构,并了解基于Z-Stack协议栈的SappWsn应用程序框架的工作机制,认识协议栈中将节点按照“功能端点”区分的思想。掌握了基于ZigBee协议栈程序的基本开发步骤,熟悉了基于ZigBee协议栈的编程的一定技巧,有利于进一步学习开发ZigBee应用,对以后的学习开发大有裨益。