# 测试设计与验证方法 (docs/70_testing/main.md) 本章节整理手环系统的仿真联调指令、IO 状态变化监控规范以及人工实机验证用例。 ## 1. 串口仿真指令注入规范 手环程序在 `main.c` 中通过 UART1 实现了仿真指令解析,支持在开发及免焊测试阶段通过电脑串口助手直接向手环发送字符指令,仿真各种物理交互: | 串口发送字符 | 对应仿真的物理事件与说明 | 预期系统响应 | | :--- | :--- | :--- | | **`u` / `U`** | 仿真短按 / 长按 **▲ 键** | 时钟界面切换 / 菜单滚动 | | **`d` / `D`** | 仿真短按 / 长按 **▼ 键** | 时钟界面切换 / 菜单滚动 / 长按取消报警 | | **`s` / `S`** | 仿真短按 / 长按 **SOS 键** | 触发本地主动 SOS 警报 / 触发对码保存 | | **`c`** | 仿真同时长按 **▲ + ▼ 键 3 秒** | 系统直接进入配对模式(P-00) | | **`a`** | 仿真捕获到**已配对门磁**报警信号 | 系统跳转到门磁报警界面,亮红灯,振动 1 次 | | **`p`** | 仿真捕获到**已配对 PIR 红外**信号 | 系统跳转到 PIR 报警界面,亮橙灯,振动 2 次 | | **`1`** | 强制切换系统状态为 **NORMAL** (撤防/常态) | 屏幕时钟状态栏显示 `NORMAL` | | **`2`** | 强制切换系统状态为 **ARMED** (布防) | 屏幕时钟状态栏显示红色闭锁 `🔒` | | **`3`** | 强制切换系统状态为 **DISARMED** (撤防) | 屏幕时钟状态栏显示绿色开锁 `🔓` | --- ## 2. LED 与马达 IO 跳变日志 主循环对外设引脚的电平状态进行了跟踪,当引脚电平发生变化时,自动通过串口向外部终端打印输出日志。这可以在没有焊接实体马达或 LED 灯的情况下验证控制逻辑是否正确: * **LED 状态日志格式**:`[STATE] LED status -> R:1 G:0 B:0` (0表示亮,1表示灭) * **马达状态日志格式**:`[STATE] MOTOR -> 1` (1表示开启振动,0表示关闭振动) --- ## 3. 人工实机验证用例 ### 3.1 时钟待机与电量对齐 * **测试方法**:正常上电启动,查看待机界面。 * **预期结果**:时钟、日期显示正常。屏幕右上角的电量 `85%` 与电池图标对齐美观,无任何重叠或乱码(间距为 6 像素)。 ### 3.2 传感器对码与保存 * **测试方法**:同时长按 ▲+▼ 3秒进入配对,用上下键选中 `DETEC. PIR`,然后物理触发 PIR 传感器,随后按下 SOS 确认保存。 * **预期结果**: 1. 进入配对时,LED 亮白色闪烁(3Hz),马达短振 1 次确认。 2. 解码匹配成功后,OLED 屏显示 `✓已保存`,LED 绿色常亮 2 秒,马达强振 1 次(400ms),随后自动退回配对菜单。 ### 3.3 低功耗休眠与按键唤醒 * **测试方法**:在常态下静置手环 10 秒钟不作任何操作。 * **预期结果**: 1. 10秒后,屏幕全黑关闭,且 LED 熄灭,马达不鸣叫(`SGM_CTRL` 拉低为0)。 2. 按下任意一个物理按键(▲、▼、SOS),屏幕瞬间被点亮并重新恢复时钟待机画面。