generated from hulk/gd32f4xx_template_cmake_vscode
GUI v0.2.9: fix chronic-lag root cause (log trim crash on PySide6 6.11) + 5 hardening fixes
- log trim used instance-level enum access (removed in PySide6 6.11), crashed
This commit is contained in:
@@ -160,9 +160,40 @@
|
||||
(app+window 两级 setWindowIcon,_icon_path() 兼容源码态与 _MEIPASS 打包态)、
|
||||
Windows 任务栏独立标识 AppUserModelID "hulk.FilmForgeGUI"。README"无应用
|
||||
图标"遗留项关闭。
|
||||
- v0.2.8:**慢性卡顿修复**——`_log()` 手工 cursor 裁剪(`cursor.Start`/
|
||||
`BlockUnderCursor` 实例级枚举访问)在 PySide6 6.11 上必然抛 AttributeError,
|
||||
日志超 500 行(100ms 上报 ≈50s)后每个 100ms tick 异常中止 `_tick` 后半段:
|
||||
应答超时清理失效(pending 永不清 → "停止"点击被幂等去重永久拦截,实拍状态栏
|
||||
"M2S0 应答中,已忽略重复发送")、RX 队列积压 ratchet(帧处理滞后 54ms→均值
|
||||
1037ms/峰值 2701ms,日志/chip/曲线显示滞后数秒,"停止 5s 后才见命令发出"实为
|
||||
日志显示积压,TX 本身 5~166ms 即出)、日志无限增长、CPU +30%。改原生
|
||||
`setMaximumBlockCount(500)` 环形裁剪;selftest 新增"500 行封顶/封顶后可追加/
|
||||
最新行在末尾"3 条回归。离屏 A/B 实测(GUI/_diag_latency_buggy.py,假固件
|
||||
100ms 上报+定时点击):buggy 组 5.5 分钟异常 2241 次、修复组全程漂移 ≤15ms/
|
||||
零异常/零积压。v0.2.7 exe(2026-10-10 打包)内嵌同版本 PySide6 6.11.2,
|
||||
同带此 bug,需重新打包生效。
|
||||
- v0.2.9:**整体审查修复 5 项**——①CSV 写失败(磁盘满/记录盘被拔)自动停记录
|
||||
并提示,不再沿 _tick 帧处理路径抛 OSError 中止主循环(与 v0.2.8 日志裁剪同款
|
||||
失效管道);②故障标记 faults 封顶 1000 条(曾是唯一无上限缓冲:NTC 抖动时
|
||||
10 条/s 无限增长,且 _draw_faults 每 paint 全量扫描);③串口写超时单独捕获
|
||||
SerialTimeoutException——只丢该条命令、链路保留,不再按 OSError 当"设备拔出"
|
||||
关端口断链(适配器停滞曾迫使手动重连);④日志自动滚动仅在贴底时跟随(上报
|
||||
运行时可上翻历史,不再被拽回底部);⑤冻结视图切片右缘同样二分(暂停时长不再
|
||||
增加 render 成本)。selftest 新增 7 项回归(封顶/滚动跟随/CSV 失败自停/冻结
|
||||
切片)共 59 项全过。整体审查报告(2026-10-12)其余 P3 遗留:selftest 未覆盖
|
||||
_tick 主循环(超时清理/丢失判定)、"全部"窗口全量切片有 MAX_SAMPLES 兜底、
|
||||
_last_set 单槽位罕见误补偿(8s 自愈)、build_exe remove_stale 无提示强杀
|
||||
运行实例、M888 后固定 2s 重查可能早于固件就绪、_danger_reset 把去重忽略记成
|
||||
"已下发"。协议建议的 300ms×3 自动重发维持不做(设计决策,用户拍板)。
|
||||
- selftest 全过(累计新增 15 项回归用例,含窗口图标非空检查);exe 已本地
|
||||
打包冒烟,Gitea 发布待用户确认后执行。
|
||||
遗留见其 README"已知事项":USB-RS485 适配器更换。
|
||||
- [x] **GUI 慢性卡顿修复(根因已定位并修复 v0.2.8,待真机确认)**:
|
||||
根因/机理/实测数据见上方 v0.2.8 条目(`cursor.Start` 实例级枚举访问在
|
||||
PySide6 6.11 必抛 → tick 异常中止 → 应答超时清理失效 + RX 积压 ratchet +
|
||||
日志无限增长)。复现/验证脚本:`GUI/_diag_latency.py`(修复基线)/
|
||||
`GUI/_diag_latency_buggy.py`(带 bug 对照,假固件 100ms 上报+定时点击)。
|
||||
遗留:待真机长时间运行确认 + 重新打包 exe。
|
||||
- [ ] **LED 引脚确认**:FilmForge 自制板 LED 引脚未定(当前沿用模板默认 PA15,
|
||||
仅为构建占位),按原理图修改。
|
||||
- [ ] **delay_10us 校准**:M4@168MHz 系数为估算值(/300000),需实测修正。
|
||||
|
||||
Reference in New Issue
Block a user