7.4 仿真调试
一句话理解
把 7.2 / 7.3 的代码烧进两块板子:终端周期上报,协调器屏幕显示,用肉眼看到数据在空中飞。
调试步骤
- 分别编译协调器工程和终端(路由器)工程,分别下载到两块开发板;
- 终端(路由器)设备加入 ZigBee 网络后,观察两块板子的屏幕。
观察现象
终端(路由器)屏幕
终端上电入网后,屏幕显示:
Router: 3028 ← 本设备网络地址
Parent: 0 ← 父节点(协调器)
Report: 3 ← 已上报次数(每次 +1)终端每 3 秒上报一次,Report: 后的数字不断增长。
协调器屏幕
协调器屏幕显示:
ZigBee Coord
Network ID: AABC ← 网络 ID
pro. report ← 收到上报提示
Rx Value: 3 ← 收到的属性值(与终端上报值一致)协调器每收到一次上报,Rx Value 更新一次,数值与终端 Report: 的数字同步增长。
实验现象小结
| 设备 | 屏幕显示 | 含义 |
|---|---|---|
| 终端 | Report: N | 第 N 次上报(3 秒一次) |
| 协调器 | Rx Value: N | 收到上报值 N |
两边的 N 始终一致——数据从终端成功"飞"到了协调器,属性上报链路打通!
如果数值不一致或不动
- 检查终端是否已入网(Parent 是否为 0x0000);
- 检查协调器是否开启
ZCL_REPORT_DESTINATION_DEVICE+ZCL_REPORT宏; - 检查终端是否开启
ZCL_REPORTING_DEVICE宏; - 检查两块板子是否在同一个网络(Network ID 一致)。
内容来源:紫甲 IoT《ZigBee 3.0 开发指南》第四部分·7.4 仿真调试,原站链接
本章自测
一、单项选择题(每题 4 分,共 40 分)
仿真调试的第一步是(A. 先把两块板子接上网线 B. 分别编译协调器工程和终端(路由器)工程,并下载到两块开发板 C. 先用串口助手发命令 D. 先关闭协调器再上电终端) 答案:B
终端(路由器)屏幕上显示的
Parent: 0表示(A. 终端没有父节点 B. 父节点是协调器(网络地址 0x0000) C. 父节点掉线了 D. 父节点地址非法) 答案:B终端屏幕上
Report: 3中数字 3 的含义是(A. 本设备短地址 B. 已上报次数,每上报一次加 1 C. 网络 ID D. 父节点地址) 答案:B终端上报的周期是(A. 每 1 秒一次 B. 每 3 秒一次 C. 每 30 秒一次 D. 每分钟一次) 答案:B
协调器屏幕上
Rx Value: 3中的数值 3 表示(A. 协调器自己的上报次数 B. 协调器收到的属性值,与终端上报值一致 C. 协调器的网络地址 D. 入网设备总数) 答案:B实验成功的标志是(A. 终端 Report 数字增长,协调器 Rx Value 数字同步增长且两者始终一致 B. 终端数字增长而协调器不动 C. 协调器数字增长而终端不动 D. 两块板子都黑屏) 答案:A
协调器屏幕上
pro. report这条提示表示(A. 协调器自己要上报了 B. 协调器收到了一条周期上报(periodic report) C. 协调器正在组网 D. 协调器出错) 答案:B如果协调器屏幕上的 Rx Value 一直不动,首先应该排查的是(A. 终端是否已入网、Parent 是否为 0x0000 B. 串口线是否插好 C. 电脑音量 D. 屏幕亮度) 答案:A
下列哪一项不是调试排错清单中列出的检查项(A. 终端是否已入网(Parent 是否为 0x0000) B. 协调器宏 ZCL_REPORT_DESTINATION_DEVICE + ZCL_REPORT 是否开启 C. 终端宏 ZCL_REPORTING_DEVICE 是否开启 D. 两块板子的 USB 线颜色是否一致) 答案:D
两块板子属于同一个 ZigBee 网络,可以通过屏幕上哪个字段是否一致来判断(A.
Report:B.Rx Value:C.Network ID(协调器上) D.Parent:) 答案:C
二、问答题(每题 20 分,共 60 分)
- 简述本实验仿真调试的完整步骤,并说明成功时两块板子屏幕应分别出现什么现象。参考答案要点:
- 分别编译协调器工程和终端(路由器)工程,分别下载到两块开发板;
- 终端加入 ZigBee 网络后,观察两块板子的屏幕;
- 终端屏幕显示
Router: <短地址>、Parent: 0、Report: N,每 3 秒 N 加 1; - 协调器屏幕显示
ZigBee Coord、Network ID: <网络号>、pro. report、Rx Value: N; - 两边的 N 始终一致,说明数据成功从终端"飞"到协调器。
- 如果实验中协调器 Rx Value 不更新或与终端 Report 数字不一致,应该按哪些方面排查?参考答案要点:
- 检查终端是否已入网:屏幕上 Parent 是否为 0x0000;
- 检查协调器宏:是否开启
ZCL_REPORT_DESTINATION_DEVICE+ZCL_REPORT; - 检查终端宏:是否开启
ZCL_REPORTING_DEVICE; - 检查两块板子是否在同一网络:协调器屏幕上的 Network ID 是否一致;
- 宏漏开或终端未入网都会导致接收侧收不到上报。
- 为什么说"两边的 N 始终一致"是属性上报链路打通的直接证据?参考答案要点:
- 终端每上报一次
seqNum自增,屏幕Report: N; - 协调器每收到一条上报命令,就把收到的属性值显示为
Rx Value: N; - 若从终端组装、空中传输到协调器解析显示整条链路任何一环出问题,两边数字就会错位或不动;
- 两边 N 同步且一致,说明"终端组装 → 发送 → 协调器接收解析显示"整条链路都正常工作。