feat(web): 桌面原生桥 + 配置落盘 + 无设备静默态;排除调试脚本

变更点:
1. esp32_server.py
   - /api/motor/ui-state、/api/lab/ui-state:配置原子落盘 data/*.json(WebView2 清存储仍在)
   - _GuiApi.ecat_api/bridge_info:桌面壳经 GUI 进程裸 socket 直连 ecat_native,不经浏览器 HTTP
2. js/common/desktop-bridge.js(新)
   - 探测 pywebview.api(含 iframe top/parent),transport-ecat 优先走原生桥
3. connection.js + responsive.css + components.css
   - setQuietMode:离线且无传输时 html[data-dcu-calm=1] 掐常驻动画
   - 进度条斜纹仅 .live 挂载,空闲不再按刷新率空转重绘
4. device-link.js
   - 先查 native/health,已健康跳过 motor/start,避免 loop_stop 重进 OP 假超时
   - 周期强制 0.25ms + DC SYNC0 对齐;轮询自愈被配错的 DC/周期
5. motor/main.js + transport-ecat.js
   - 配置双写 localStorage + 磁盘 ui-state;pagehide/sendBeacon 刷盘;导入导出
   - 探测代际 probeGen;ECAT 失败阈值 12;跟踪 bootActive/slaveAl/slaveOp
6. lab/spi_test.html、ota/boot_ecat.js、can_monitor 等跟随桥/静默态
7. .gitignore
   - 排除 scripts/_* 与 anal/collect/measure/trace 等调试脚本、lab 产物、data/ 运行态
This commit is contained in:
cbb
2026-09-20 22:58:00 +08:00
parent e91d53e0fc
commit 383535bd1d
23 changed files with 2060 additions and 283 deletions
+39
View File
@@ -30,6 +30,45 @@ scripts/selftest_*.py
!scripts/probe_ecat_slot_atomicity.py
!scripts/probe_ecat_vs_wifi.py
# 电机页配置落盘(本机 UI 状态,每人不同;页面服务自动读写)
/data/motor_ui_state.json
/data/motor_ui_state.json.tmp
# ── 调试/临时脚本与本地采样产物(不入库)──
# _ 前缀:现场排障探针、预览截图、一次性驱动
scripts/_*
# 一次性分析/采样/测量/追踪脚本
scripts/anal_*.py
scripts/collect_*.py
scripts/capture_*.py
scripts/measure_*.py
scripts/e2e_*.py
scripts/trace_*.py
scripts/flash_gd32_ecat.py
scripts/recover_ecat_after_reset.py
scripts/test_ecat_version_*.py
scripts/test_gd32_restart_version.py
scripts/test_motor_ui_state.*
scripts/test_ver_*.py
# lab 实验中间产物(图/表/hex/探针输出;已入库的 lab/*.html 保持跟踪)
/lab/cpu_probe/
/lab/skip_meter/
/lab/_flash_*.py
/lab/*.json
/lab/*.svg
/lab/*.hex
/lab/*probe*.txt
/lab/*summary*.json
/lab/*_report.json
/lab/*_hist.json
# 运行时页面状态、桥接采样、本机 dump
/data/
*.jsonl
/logs*.json
/st*.json
# 编辑器 / 系统
.vscode/
.idea/