feat(DLPilot): v0.4.0 — PySide6-Fluent-Widgets UI and Light theme
This commit is contained in:
@@ -20,14 +20,22 @@
|
||||
- **I2C-Inject**:RP2040 固件 + PC GUI,在 demo 板 I2C 总线上择机注入读写 LT8619C
|
||||
寄存器(避让主控 500ms 轮询,写后读回校验)。
|
||||
|
||||
## 2. 当前状态快照(2026-09-20)
|
||||
## 2. 当前状态快照(2026-09-24,v0.4.0)
|
||||
|
||||
- `APP_VERSION = '0.3.6'`(`DLPilot/src/app_gui.py:43`);工作树干净;
|
||||
本地 main == origin/main(e354423),**全部提交已推送**。
|
||||
- Gitea Releases 最新为 **v0.3.5** —— v0.3.6 已打包、已提交,**但未发布**(见 §5.1)。
|
||||
- `release/DLPilot.exe` 与 `release/DLPilot-v0.3.6-win64.zip` 是 2026-09-18 15:32
|
||||
同批构建,**均已包含最后的二进制载荷 hex 日志修复**(e354423),内容一致。
|
||||
- `release/pattern_slots.json` 记忆的光机串口为 COM15(115200 8-N-1)。
|
||||
- 当前入口为 `DLPilot/src/app_fluent.py`,`APP_VERSION = "0.4.0"`;使用
|
||||
PySide6-Fluent-Widgets。旧 `app_gui.py` 保留作历史对照,不再由入口加载。
|
||||
- 本次发布为 `DLPilot-v0.4.0`,源码、文档与 `release/DLPilot.exe` 合并为一个提交;
|
||||
zip 只上传 Gitea Release,不入库。远端完成状态以标签和附件查询为准。
|
||||
- 支持的模式、EDID 信息默认折叠;修复标题栏图标与 PD 成功状态绿色显示。
|
||||
- Light 显式同步 Qt 调色板、容器背景与 Windows 标题栏,浅灰主背景、白色卡片、深色文字;
|
||||
保留 Dark/System 切换。主题不写入用户的 `pattern_slots.json`。
|
||||
- Qt 单文件打包收集 `qfluentwidgets` 资源与系统 `icuuc.dll`,启动注册并预加载
|
||||
Qt/Shiboken DLL,避免 QtCore 导入失败。
|
||||
- 已完成源码编译、无硬件 RS485 自测(ALL PASS)、Qt 离屏浅色渲染检查和正式 EXE
|
||||
定时启动退出(exit=0)。本次原生桌面自动化接口不可用,未完成成品 Light 截图;
|
||||
不应将离屏截图等同于成品完整视觉或硬件验收。
|
||||
- 本机 `release/pattern_slots.json` 的 COM5 运行配置与 `EDID-viewer/` 未跟踪目录
|
||||
不属于本次发布;保留本地文件,提交及发布使用仓库预置配置。
|
||||
|
||||
## 3. 开发方向主线(时间线)
|
||||
|
||||
@@ -58,7 +66,7 @@ feature/ctk-ui 分支完成 CustomTkinter 双栏仪表盘重构(规格:`UI
|
||||
清理残余 HDMI-Tool 引用与目录更名;修复 USB 拔出后同参数重连失效(掉线分支
|
||||
清 `_open_key`)。
|
||||
|
||||
**阶段 5 · 电源检查卡(09-17~18,v0.3.4~0.3.6)—— 当前主战场**
|
||||
**阶段 5 · 电源检查卡(09-17~18,v0.3.4~0.3.6)**
|
||||
- **电源自检**:M301(协议)→M302(挡位电流)→M303(实测电压) 三步帧驱动状态机,
|
||||
FPDO 判定=电压就近 PD 固定挡(5/9/12/15/20/28V ±5%)+ 挡位电流;12V 且 ≥3A
|
||||
绿底,挡位不符红底,无匹配 ERR(CH224Q 电压配置寄存器只写不可读,只能实测判定)。
|
||||
@@ -68,6 +76,11 @@ feature/ctk-ui 分支完成 CustomTkinter 双栏仪表盘重构(规格:`UI
|
||||
封装在 `payload_u16_be/payload_s16_be/payload_u32_be/format_power`。
|
||||
- 伴随一串稳定性修复(详见 §4)。
|
||||
|
||||
**阶段 6 · Fluent UI 重写(09-24,v0.4.0)**
|
||||
PySide6-Fluent-Widgets 替换 CustomTkinter 主界面,延续 EDID、测试图案、RS485、
|
||||
PD/功率/温度/电流及自定义槽位功能;GUI 图案窗口使用 Qt,CLI 图案仍走 tkinter。
|
||||
补齐模式/EDID 折叠、PD 成功状态颜色、图标、Light 调色板与 Qt 单文件 DLL 加载。
|
||||
|
||||
## 4. 尝试过 / 推翻过 / 反复调过的思路(勿重蹈)
|
||||
|
||||
| # | 问题 | 最初做法 → 最终做法 / 教训 |
|
||||
@@ -78,7 +91,7 @@ feature/ctk-ui 分支完成 CustomTkinter 双栏仪表盘重构(规格:`UI
|
||||
| 4 | "串口断不开" | 表象是断开逻辑 bug,实际根源是**双实例互抢串口** → 单实例锁 + 串口占用提示(e87bf14) |
|
||||
| 5 | 窗口最大化卡顿 | EDID 信息区 CTkScrollableFrame+40 余个逐行 Label,最大化时逐控件重绘 → 换 CTkTextbox 整体重排,开销低一个量级(30bc224) |
|
||||
| 6 | 启动强制扩展拓扑 | 无条件 `SetDisplayConfig` 扩展会打扰用户自选拓扑(如家里"仅第二屏幕")→ 仅当未激活显示器 EDID 厂商字节为转接板签名 `61 93`("XLS") 时才拉回(d9ecff4) |
|
||||
| 7 | GUI 框架 | 原生 tkinter → CustomTkinter 双栏仪表盘(84838e3);CTk 6.x 怪癖(ComboBox 无 textvariable、tag_config 不可用、grid/pack 不可混用)已兜底,见 AGENTS.md §6 |
|
||||
| 7 | GUI 框架 | 原生 tkinter → CustomTkinter 双栏仪表盘(84838e3);v0.4.0 再迁移到 PySide6-Fluent-Widgets;旧 CTk 文件仅供历史对照 |
|
||||
| 8 | 投屏退出按钮文案 | "恢复桌面"→"停止投屏"→"停止测试图像"(3f35ad2→b167ce3):最终语义是关测试图窗口,与显示拓扑恢复无关 |
|
||||
| 9 | USB 拔出后重连失效 | 掉线分支未清 `_open_key`,同参数重连被"参数未变"逻辑跳过 → 掉线同步清缓存(51e2f1c) |
|
||||
| 10 | 电源自检卡死 | 帧路由引用未定义变量 `payload`(3f36ead),改名/重构时注意帧回调的作用域 |
|
||||
@@ -86,17 +99,10 @@ feature/ctk-ui 分支完成 CustomTkinter 双栏仪表盘重构(规格:`UI
|
||||
|
||||
## 5. 未实操 / 待办清单(接手者从这里挑活)
|
||||
|
||||
### 5.1 【发布缺口,一条命令的事】v0.3.6 未发布
|
||||
代码、exe、zip 均已就绪并推送(§2),但 Gitea 上没有 v0.3.6 Release、也没有
|
||||
DLPilot-v0.3.6 tag(本地 tag 止于 v0.3.5)。待执行:
|
||||
|
||||
```powershell
|
||||
cd DLPilot/src
|
||||
python publish_gitea.py DLPilot-v0.3.6-win64.zip --replace --insecure # 需 GITEA_TOKEN
|
||||
```
|
||||
|
||||
(GITEA_TOKEN 已 setx 为用户级环境变量,新开会话自动继承;Release 经 API 创建时
|
||||
远端会自动建 tag。)
|
||||
### 5.1 v0.4.0 发布交接
|
||||
v0.4.0 已覆盖未单独发布的 v0.3.6 功能与本次 Fluent UI 改动,无需另发 v0.3.6。
|
||||
发布时先推送代码与同提交标签,再上传 `DLPilot-v0.4.0-win64.zip`;
|
||||
核对远端标签提交、附件名称/大小,并记录验证结果。若需补传,先查询资产,避免重复上传。
|
||||
|
||||
### 5.2 【待硬件】0x606E 的 0x40/0x80 两组位交换
|
||||
demo 板仅实测了 bit5(0x20)=镜像 D[7:0];0x40/0x80 对另外两组**未单独实测**,
|
||||
@@ -111,9 +117,8 @@ demo 板仅实测了 bit5(0x20)=镜像 D[7:0];0x40/0x80 对另外两组**未
|
||||
`selftest_rs485.py` 中 M303/M304 用真机帧,M305 向量是按协议推演的;拿到真机
|
||||
M305 回包后替换向量,使回归更实。
|
||||
|
||||
### 5.5 【小】README 日期戳滞后
|
||||
根 README 与 DLPilot/README 的"更新:2026-09-11"停在旧日期,但正文内容其实已
|
||||
同步到 M305/电源检查;下次改动时顺手刷新即可。
|
||||
### 5.5 README 已同步
|
||||
本次已将根 README 与 DLPilot/README 的安装依赖、界面描述和日期更新到 v0.4.0。
|
||||
|
||||
### 5.6 【明确"不做",非待办】
|
||||
- **TI 原始 I2C 命令透传不做**:GD32 网关固件只收 ASCII M 命令集(v0.2.0 计划的
|
||||
@@ -125,12 +130,12 @@ M305 回包后替换向量,使回归更实。
|
||||
|
||||
```powershell
|
||||
cd DLPilot/src
|
||||
python -m py_compile *.py # 编译检查
|
||||
python -m compileall -q . # 编译检查
|
||||
python selftest_rs485.py # 光机协议回归(改 dlpc_rs485.py 后必跑)
|
||||
python hdmi_gui.py --seconds 5 # GUI 冒烟
|
||||
python build_exe.py # 打包 → ../release/DLPilot.exe
|
||||
python package_release.py 0.3.7 # 组装 zip(版本号从 0.3.7 起,0.3.6 已占用)
|
||||
python publish_gitea.py DLPilot-v0.3.7-win64.zip --replace --insecure
|
||||
python package_release.py 0.4.0 # 组装当前版本 zip;新版本先更新 APP_VERSION
|
||||
python publish_gitea.py ../release/DLPilot-v0.4.0-win64.zip --replace --insecure
|
||||
```
|
||||
|
||||
上游协议/寄存器语义问题先查上游仓 `protocols.md` 与 `doc/architecture/`;
|
||||
|
||||
Reference in New Issue
Block a user