Files
stc32g128k/Docs/40_ui-design/main.md

3.3 KiB
Raw Blame History

UI 设计 (docs/40_ui-design/main.md)

本章节定义手环 120x240 AMOLED 屏幕的画面布局、各页面坐标位置、中文字体/ASCII 字符对齐基线以及局部刷新逻辑。

1. 屏幕物理参数与刷新机制

  • 屏幕规格0.95寸 AMOLED 屏 (RM69310 控制芯片),物理分辨率 120x240
  • 坐标偏移修正:根据硬件布线,写屏窗口渲染存在 4 像素的 X 轴偏移偏量,软件在调用 LCD_SetWindow() 时必须强行追加该偏移。
  • 局部刷新防抖机制:清除重绘标志(Redraw)的动作必须在具体的刷新绘制块结束时重置,防止因为主循环高速轮询而产生屏幕闪烁。

2. 页面布局与坐标坐标规范

2.1 时钟待机界面 (STATE_NORMAL / STATE_ARMED / STATE_DISARMED)

时钟页面作为常态显示,包括状态栏、数字时钟和日期行。

+---------------------------------------+
|  🔒 ARMED                   🔋 85%    | <- 状态栏 (Y=24~27)
|                                       |
|                                       |
|                10:35                  | <- 中央时间 (Y=80~128)
|                                       |
|                                       |
|             VEN. 07-10                | <- 底部日期 (Y=180)
+---------------------------------------+
  • 状态栏电量显示(极重要)
    • 电池图标 绘制在 X=92, Y=27
    • 电量百分比 绘制在 X=62, Y=24
    • 两个控件保持 6 像素安全间距,彻底防范乱码和字符相撞。
  • 安防状态显示
    • 布防状态 (ARMED):状态栏左侧显示红色闭锁 🔒 图标,显示 ARMED
    • 撤防状态 (DISARMED):状态栏左侧显示绿色开锁 🔓 图标,显示 DISARMED

2.2 传感器配对选择菜单 (STATE_PAIR_MENU)

  • 顶部标题:显示 MODE PAIR P-XX(其中 XX 为当前已配对的传感器数量)。
  • 列表滚动框:采用 3 行滚动列表,当前行高亮并显示粗体外框,字号放大(如 DETEC. PORTE),非当前行暗淡显示。

2.3 报警触发与本地 SOS 界面 (STATE_ALARMING / STATE_SOS_EMITTED)

  • 报警提示边框:全屏闪烁的红色警告虚线/实线边框。
  • 中央图标根据触发的防区传感器类型居中绘制对应的单色位图图标32x32px
    • 门磁:🚪 开门图标。
    • 红外:👤 人体辐射波纹图标。
    • 烟感:🔥 火苗图标。
    • 燃气:💨 毒气云雾图标。
    • 水浸:💧 滴水波纹图标。
    • 主动 SOS🚨 旋转警灯闪烁图标。
  • 底部两行小字
    • 第一行:传感器自定义法语名称(如 PORTE ENTREE)。
    • 第二行:防区信息与动作指示(如 ZONE 1 | CRITIQUE)。

3. 字模设计与基线修正规范

为保证排版美观,Drivers/lcd_font.h 内的标准字模点阵需要满足如下基线对齐:

  • 标准 ASCII 字符集8x16 像素点阵。
  • 百分号(%)符号基线修正:百分号字符在 lcd_font.h 数组的索引 0x25 中,点阵数据需向上平移 2 像素,以和 0~9 数字的基线保持严格水平对齐,避免百分号整体下沉。