Files
STM32F4-Base/Drivers/BSP/UI
super_agent_bot 493fa6ba0e feat(ui/remo): 7003 总线新增 STATUS 身份查询与 GOTO 直达页(#69)
STATUS(命令 4)一帧回答"现在在哪个画面":kind(MENU/PAGE/STANDBY)
+ 菜单路径/选中 + 页 id,布局契约与字节序见 ui_net_sink.h。由 uiTask
轮询驱动,同上下文读静态导航状态:零画面副作用、免锁、不发日志。
新增只读接口 ui_menu_get_nav_state / ui_content_page_current_desc。

GOTO(命令 5)按页 id 查生成表直开内容页,以 VIEW 权限进入(与
"已过查看密码"同档,不代输任何密码)。编译期门控
DTU_BENCH || UI_REMO_ALLOW_GOTO:产品构建恒拒(status=4),模拟器
构建默认开启便于无板验证;执行类页(clear/reset)固件侧同样拒绝
(status=2,与主机 EXEC_PAGE_IDS 同一事实源);待机中拒绝(status=5),
由主机按键唤醒后再来。成功应答带回目标叶节点下标便于对账。

ui_sink 主机单测补导航侧链接假件 + 最小 lvgl 桩(仅本测试目录)。
产品构建 Keil 0 Error 0 Warning;ui_sink 单测 17/17。
2026-11-02 22:19:58 +08:00
..
2026-09-09 17:15:04 +08:00
2026-09-10 11:36:33 +08:00

Drivers/BSP/UI/ — LVGL UI 组件

基于 LVGL 的界面实现:菜单树、内容页、通用组件、中文字库、待机页。 与 PC 模拟器共用同一套 UI 源码(simulator/ 只提供平台层)。

结构

核心 / 框架

文件 作用
ui_port.c/h LVGL 移植层:显示驱动、输入设备、tick 注册
ui_menu.c/h 菜单框架(树结构与导航)
ui_menu_view.c/h 菜单视图渲染
ui_menu_tab.c/h 页签组件
ui_deco.c/h 界面装饰元素(图标、边框等)
ui_standby.c/h 待机页
ui_pwd_def.h 密码页默认值定义
ui_font_cn_12.c 中文字库(由 tools/font_gen/ 生成,勿手改)

内容页

文件 作用
ui_content_page.c/h 内容页框架
ui_page_ac.c/h 交流量页
ui_page_dc.c/h 直流量页
ui_page_device_info.c/h 设备信息页
ui_page_net_cfg.c/h 网口设置页
ui_page_password.c/h 密码页
ui_page_runlog.c/h 运行日志页
ui_page_selftest.c/h 自检页

数据汇入(推流)

文件 作用
ui_net_sink.c/h 远端显示总线(RemoDispBus)数据汇入口
ui_net_sink_backend.h 后端抽象接口(MCU / 模拟器分别实现)
ui_net_sink_backend_mcu.c MCU 端后端实现

⚠️ 编码注意(本目录含中文字符串)

  • 本目录文件带 UTF-8 BOM(.c 内含中文字符串字面量,BOM 使 ARMCC 按 UTF-8 解码)
  • Edit 工具会剥掉 BOM:改完必须核对并按原样补回 3 字节 EF BB BF, 否则 ARMCC 改按 CP936 解读 → #870-D: invalid multibyte character sequence
  • UI 改动一律走 ui-verify skill 五步门禁
  • 含新汉字的文案提交前先跑 font-regen skill 重生成 ui_font_cn_12.c

相关文档

  • UI 架构:docs/UI设计/UI_设计架构.md
  • 菜单设计:docs/UI设计/菜单页面设计.md、docs/UI设计/内容页架构.md
  • 字体:docs/UI设计/UI_中文字体生成与配置.md
  • 模拟器:docs/UI设计/LVGL模拟器部署与使用说明.md
  • 自动化测试:docs/UI设计/UI_自动化测试流程.md
  • 协议:docs/UI设计/RemoDispBus协议与接收设计说明.md