# 测试设计与验证方法 (Docs/70_testing/main.md) 本章节整理手环系统的仿真联调指令、IO 状态变化监控规范以及人工实机验证用例。 ## 1. 串口仿真指令注入规范 手环程序在 `main.c` 中通过 UART1 实现了仿真指令解析,支持在开发及免焊测试阶段通过电脑串口助手直接向手环发送字符指令,仿真各种物理交互: | 串口发送字符 | 对应仿真的物理事件与说明 | 预期系统响应 | | :--- | :--- | :--- | | **`u` / `U`** | 仿真短按 / 长按 **侧边 ▲ 键** | 时钟微调 / 菜单滚动 | | **`d` / `D`** | 仿真短按 / 长按 **侧边 ▼ 键** | 时钟微调 / 菜单滚动 / 长按取消报警 | | **`e` / `E`** | 仿真短按 / 长按 **侧边 ■ 确认键** | 选中并进入等待配对 / 短按取消报警 | | **`s` / `S`** | 仿真短按 / 长按 **上部 SOS 1 键** | 触发本地主动 SOS 警报 / 触发对码保存 | | **`x` / `X`** | 仿真短按 / 长按 **上部 SOS 2 键** | 同上,验证双 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表示灭,WS2812B 幻彩 LED 控制状态) * **马达状态日志格式**:`[STATE] MOTOR -> 1` (1表示开启振动,0表示关闭振动) --- ## 3. 人工实机验证用例 ### 3.1 时钟待机与电量对齐 * **测试方法**:正常上电启动,查看待机界面。 * **预期结果**:时钟、日期显示正常。在 **135 像素宽** 屏幕上,电量 `85%` 绘制在 `X=77, Y=24`,电池图标绘制在 `X=107, Y=27`,对齐美观且有 6 像素的安全间距。 ### 3.2 传感器对码与保存 * **测试方法**:同时长按 ▲+▼ 3秒进入配对,用上下键选中 `DETEC. PIR`,按下侧边 **■ 确认键** 开启等待,随后物理触发 PIR 传感器,最后按下 **SOS 1**(或 **SOS 2**)确认保存。 * **预期结果**: 1. 进入配对时,LED 亮白色闪烁(3Hz),马达短振 1 次确认。 2. 解码匹配成功后,OLED 屏显示 `✓已保存`,LED 绿色常亮 2 秒,马达强振 1 次(400ms),随后自动退回配对菜单。 ### 3.3 低功耗休眠与按键唤醒 * **测试方法**:在常态下静置手环 10 秒钟不作任何操作。 * **预期结果**: 1. 10秒后,屏幕全黑关闭,且 LED 熄灭,马达不鸣叫(`SGM_CTRL` 拉低为0)。 2. 按下任意一个物理按键(▲、▼、确认键、SOS1、SOS2),屏幕瞬间被点亮并重新恢复时钟待机画面。 ### 3.4 手环主动发射 SOS 与 Factory ID 验证 * **测试方法**: 1. 正常开机,在串口输出中查看获取到的 20 位 `Factory ID`(或在绑定界面核对 ID)。 2. 短按上部任意一个 SOS 键触发紧急求救。 3. 使用 433MHz 接收调试工具或逻辑分析仪抓取手环发射引脚或射频信号。 * **预期结果**: 1. 手环立刻切入 `SOS EMIS` 界面,红灯闪烁,马达周期性震动。 2. 接收工具抓取到以手环 `Factory ID` 为源地址的 24 位 EV1527 信号,其 4 位数据码为 `0x08`。 3. 该信号以 2 秒为周期循环向外发射,直到按下“确认键”或其它任意键退出报警状态。