106 lines
5.7 KiB
Markdown
106 lines
5.7 KiB
Markdown
|
|
# 功能测试报告 —— RS485 → Pharos LPC 灯光控制系统
|
|||
|
|
|
|||
|
|
日期:2026-10-09
|
|||
|
|
被测系统:Pharos LPC(0140650,192.168.58.109,固件 2.16.3)+ 32 通道 DMX 灯具
|
|||
|
|
测试方法:经 RS485 总线(9600 8N1)发送 ASCII 命令帧,通过 LPC HTTP API 回读
|
|||
|
|
`/api/timeline`、`/api/output?universe=dmx:1`、`/api/group` 验证实际输出。
|
|||
|
|
结论:**全部测试通过(55/55,含 2026-10-10 循环修复与照度端到端补测)**。
|
|||
|
|
|
|||
|
|
## 1. 串口通信链路
|
|||
|
|
|
|||
|
|
| # | 测试项 | 方法 | 预期 | 结果 |
|
|||
|
|
|---|--------|------|------|------|
|
|||
|
|
| 1.1 | 串口自收发 | Ubuntu `test_rs485.py` 自发收 | TX=RX | ✅ |
|
|||
|
|
| 1.2 | Windows→Ubuntu 透传 | Test-Rs485.ps1 | 帧完整到达 | ✅ |
|
|||
|
|
| 1.3 | 离线协议验证 S1~S4 | Verify-Rs485.ps1 | 16/16 PASS | ✅ |
|
|||
|
|
| 1.4 | LPC 串口触发解析 | 发 `BRT=050` 查 `/api/group` | level=50 | ✅ |
|
|||
|
|
|
|||
|
|
## 2. 手动调光 BRT=NNN(触发器 #2)
|
|||
|
|
|
|||
|
|
| # | 命令 | 预期 level | 实测 | 结果 |
|
|||
|
|
|---|------|-----------|------|------|
|
|||
|
|
| 2.1 | `BRT=100` | 100 | 100 | ✅ |
|
|||
|
|
| 2.2 | `BRT=000` | 0 | 0 | ✅ |
|
|||
|
|
| 2.3 | `BRT=050` | 50 | 50 | ✅ |
|
|||
|
|
| 2.4 | `BRT=080` | 80 | 80 | ✅ |
|
|||
|
|
| 2.5 | `BRT=025` | 25 | 25 | ✅ |
|
|||
|
|
|
|||
|
|
(loop_test.sh 闭环回归 5/5 PASS)
|
|||
|
|
|
|||
|
|
## 3. 灯光效果 FX=NN(触发器 #11 → Timeline 1~4)
|
|||
|
|
|
|||
|
|
| # | 命令 | 预期 | 实测(/api/timeline + /api/output) | 结果 |
|
|||
|
|
|---|------|------|-----------------------------------|------|
|
|||
|
|
| 3.1 | `FX=01` 常亮 | T1 running,输出 255 稳定 | T1 running,ch=255 | ✅ |
|
|||
|
|
| 3.2 | `FX=02` 呼吸 | T2 running,亮度周期性渐变 | T2 running;采样 255→202→…渐变 | ✅ |
|
|||
|
|
| 3.3 | `FX=03` 闪烁 | T3 running,0/255 交替(1s 周期) | T3 running;连续采样 255,0,0,255,0,255 | ✅ |
|
|||
|
|
| 3.4 | `FX=04` 缓变 | T4 running,30s 缓升缓降 | T4 running;采样 39→75→110 缓升 | ✅ |
|
|||
|
|
| 3.5 | FX 互斥 | 启动 T(N) 时其余释放 | 每次仅目标 Timeline 为 running,其余 released | ✅ |
|
|||
|
|
| 3.6 | FX 清除场景覆盖 | FX 后 SC 的 Override 被清除 | FX=01 后 SC=02 的 128 覆盖消失,恢复 255 | ✅ |
|
|||
|
|
| 3.7 | FX 循环播放(2026-10-10) | 播完 30s 自动回绕不释放 | FX=01 后连续观测 2 个循环:pos 29500→1550→…→27980→20,state 恒 running、onstage 恒 true,输出不掉 0 | ✅ |
|
|||
|
|
| 3.8 | FX=02 跨边界(2026-10-10) | 呼吸效果跨过 30s 仍运行 | t+34s:T2 running pos=4560,输出非零 | ✅ |
|
|||
|
|
|
|||
|
|
## 4. 场景 SC=NN(触发器 #12 → 组 Override)
|
|||
|
|
|
|||
|
|
| # | 命令 | 预期输出 | 实测(ch1~ch4) | 结果 |
|
|||
|
|
|---|------|---------|----------------|------|
|
|||
|
|
| 4.1 | `SC=01` 全亮 | 255 | 255,255,255,255 | ✅ |
|
|||
|
|
| 4.2 | `SC=02` 半亮 | 128 | 128,128,128,128 | ✅ |
|
|||
|
|
| 4.3 | `SC=03` 微亮 | 26(10%) | 26,26,26,26 | ✅ |
|
|||
|
|
| 4.4 | `SC=04` 全灭 | 0 | 0,0,0,0 | ✅ |
|
|||
|
|
| 4.5 | SC 停 Timeline | SC 后 4 条 Timeline 全部 released | timelines=[1:released 2:released 3:released 4:released] | ✅ |
|
|||
|
|
| 4.6 | SC 释放不被 FXLoop 误重启(2026-10-10) | SC=04 后保持 released(Released ≠ Ended) | SC=04 后 35s:全部 released/none,ch=0 | ✅ |
|
|||
|
|
|
|||
|
|
## 5. 亮度叠加(Timeline/场景 × 总调光)
|
|||
|
|
|
|||
|
|
| # | 测试项 | 命令序列 | 预期 | 实测 | 结果 |
|
|||
|
|
|---|--------|---------|------|------|------|
|
|||
|
|
| 5.1 | 场景×BRT | `SC=01` + `BRT=050` | 255×50%≈128 | 128 | ✅ |
|
|||
|
|
| 5.2 | 32 通道一致性 | 同上 | ch1~ch32 全相等 | distinct=128(唯一值) | ✅ |
|
|||
|
|
| 5.3 | 恢复 | `BRT=100` + `FX=01` | 255,level=100 | 255,level=100 | ✅ |
|
|||
|
|
|
|||
|
|
## 6. 照度闭环(LUX/LXT/LX2,触发器 #8/#9/#10)
|
|||
|
|
|
|||
|
|
| # | 测试项 | 预期 | 结果 |
|
|||
|
|
|---|--------|------|------|
|
|||
|
|
| 6.1 | 死区(±50 Lux 不动) | 误差<死区时亮度不变 | ✅ |
|
|||
|
|
| 6.2 | 超目标降光 | 实测>目标+死区 → 降亮度 | ✅ |
|
|||
|
|
| 6.3 | 欠目标升光 | 实测<目标-死区 → 升亮度 | ✅ |
|
|||
|
|
| 6.4 | 下限限幅 5% | 不低于 5% | ✅ |
|
|||
|
|
| 6.5 | 上限限幅 100% | 不超过 100% | ✅ |
|
|||
|
|
| 6.6 | LXT 目标设定 | lux_target 全局变量更新 | ✅ |
|
|||
|
|
| 6.7 | LX2 对数映射 8 档 | 1Lux→6% … 200k→100% | ✅ 8/8 |
|
|||
|
|
| 6.8 | 照度计在线读取(2026-10-10) | Modbus 地址 2 @4800 读 reg 0x0002×2 | 实测 26 Lux(室内遮光) | ✅ |
|
|||
|
|
| 6.9 | lux_sync.py 端到端(2026-10-10) | 轮询照度→BRT 帧→LPC 总调光随动 | 26 Lux → BRT=73 → /api/group level=73,输出 148 随动 | ✅ |
|
|||
|
|
|
|||
|
|
(lux_test.sh 7/7 PASS;lx2_test.sh 8/8 PASS;照度计实测定位:Modbus 地址 2,4800 8N1,寄存器 0x0002×2)
|
|||
|
|
|
|||
|
|
## 7. 系统健壮性
|
|||
|
|
|
|||
|
|
| # | 测试项 | 预期 | 实测 | 结果 |
|
|||
|
|
|---|--------|------|------|------|
|
|||
|
|
| 7.1 | Upload 清 Override | 上传后场景覆盖失效(已知行为) | 复现,文档已注明需重发命令 | ✅ |
|
|||
|
|
| 7.2 | Pass-Through=None 本地模式 | 本地输出不受外部源压制 | 全通道 255 输出 | ✅ |
|
|||
|
|
| 7.3 | 连续快速切换 | FX→SC→FX 交替 | 状态机正确互斥,无残留 | ✅ |
|
|||
|
|
| 7.4 | 非法编号 | FX/SC 超出 01~04 | 脚本忽略(levels 表 nil 守卫、n 范围判断) | ✅(代码审查) |
|
|||
|
|
|
|||
|
|
## 8. 测试结论
|
|||
|
|
|
|||
|
|
| 功能域 | 用例数 | 通过 |
|
|||
|
|
|--------|-------|------|
|
|||
|
|
| 串口通信链路 | 4 | 4 |
|
|||
|
|
| 手动调光 BRT | 5 | 5 |
|
|||
|
|
| 效果 FX | 8 | 8 |
|
|||
|
|
| 场景 SC | 6 | 6 |
|
|||
|
|
| 亮度叠加 | 3 | 3 |
|
|||
|
|
| 照度闭环 | 9 | 9 |
|
|||
|
|
| 健壮性 | 4 | 4 |
|
|||
|
|
| 离线协议 | 16 | 16 |
|
|||
|
|
| **合计** | **55 项(含离线 16 项)** | **全部通过** |
|
|||
|
|
|
|||
|
|
> 2026-10-10 修订:发现"FX 播完 30s 即 released 灯灭"缺陷(3.7/3.8 原结论"持续运行"不成立),
|
|||
|
|
> 已通过新增触发器 #13 FXLoop(Timeline Ended → 重启时间线)修复并复测通过;
|
|||
|
|
> 照度功能补测 6.8/6.9 端到端链路。
|
|||
|
|
|
|||
|
|
系统功能完备,可交付使用。使用方法见 `USAGE.md`,搭建步骤见 `SETUP.md`。
|