掉电保存用于保留设定值、语言选择等参数。本节用“海湾工作台”演示 LW 工作值 → RW 保存值 → 启动恢复。
核心功能
- 直接绑定 RW,确认输入后写入保存区。
- 先编辑 LW,点击“保存参数”后再写 RW。
- 启动时读回保存值,检查参数是否恢复。
1. 地址规划
LW 用于运行中的临时数据;RW 用于需要保留的设置。两者是不同区域,LW1000 与 RW1000 不会自动同步。
本例型号为 E070C1060,1024 × 600,参数范围为 0~9999。
| 地址 | 用途 | 说明 |
|---|---|---|
| LW1000 | 工作参数 | 键盘输入和清零操作修改此值。 |
| RW1000 | 保存参数 | 点击“保存参数”时更新。 |
| LW1001 | 启动读回 | 启动时从 RW1000 读取,便于核对。 |
| LW1002 | 保存命令 | 按钮写 1,脚本处理后清零。 |
| RW1010 | 直接保存 | 画面 1 的数值控件直接读写此地址。 |
地址数字按十六进制字地址填写,例如 LW1000 在脚本中写为 0x1000。本例均为 UINT16,每个数值占 1 个字。
2. 参数设置
2.1 工作参数
在画面 0 放置“数值输入”控件,读取地址设为 LW1000。下图展示本例的完整功能设置。

| 序号 | 参数 | 本例 | 作用 |
|---|---|---|---|
| 1 | 启用输入 | 是 | 点击数值可编辑。 |
| 2 | 键盘类型 | 弹出键盘 | 输入时弹出键盘页。 |
| 3 | 键盘画面 | 100 | 使用工程内的数字键盘。 |
| 4 | 键盘位置 | 屏幕中心 | 设置键盘弹出位置。 |
| 5 | 键盘初始值 | 否 | 不将当前值带入输入框。 |
| 6 | 读取地址 | LW1000 | 显示工作参数。 |
| 7 | 写入地址 | 与读取地址相同 | 确认输入后写回 LW1000。 |
| 8 | 数据类型 | UINT16 | 无符号 16 位整数。 |
| 9 | 整数位数 | 4 | 显示本例的四位参数。 |
| 10 | 前补零 | 否 | 不在数值前补 0。 |
| 11 | 小数位数 | 0 | 按整数显示。 |
| 12 | 线性变换 | 否 | 直接显示寄存器值。 |
| 13 | 附加单位 | 留空 | 本例不附加单位。 |
| 14 | 无空格 | 否 | 保留数值与单位间的空格。 |
| 15 | 密码显示 | 否 | 显示实际数值。 |
| 16 | 十六进制 | 否 | 数值按十进制显示。 |
| 17 | 范围限制 | 固定范围 | 使用下方的输入上下限。 |
| 18 | 下限值 | 0 | 允许输入 0。 |
| 19 | 上限值 | 9999 | 允许的最大输入值。 |
| 20 | 警示色 | 否 | 不启用越界警示颜色。 |
| 21 | 越界数值显示 | 正常显示 | 越界时仍显示读到的值。 |
| 22 | 键盘越界显示 | 禁止设置 | 拒绝超出范围的键盘输入。 |
字体、位置、图片和权限等公共属性见 第三章 控件;其他数值格式见 3.7 数值输入。
2.2 保存按钮
放置“字设置按钮”,文字设为“保存参数”。

| 序号 | 参数 | 本例 | 作用 |
|---|---|---|---|
| 1 | 写入地址 | LW1002 | 向脚本提交保存命令。 |
| 2 | 操作模式 | 写常量 | 每次操作写入固定值。 |
| 3 | 常量值 | 1 | 请求保存工作参数。 |
| 4 | 数据类型 | UINT16 | 与脚本读取类型一致。 |
| 5 | 执行时机 | 松开时 | 松开按钮后执行。 |
| 6 | 播放声音 | 否 | 本例不播放触摸声音。 |
“清零工作值”同样使用字设置按钮,将地址改为 LW1000、常量改为 0。它只清零工作值;需要保存 0 时,再点击“保存参数”。
2.3 结果显示
另放置两个“数值输入”控件,均关闭“启用输入”。
| 控件 | 读取地址 | 数据类型 | 整数位数 |
|---|---|---|---|
| RW 保存值 | RW1000 | UINT16 | 5 |
| 启动读回 | LW1001 | UINT16 | 4 |
RW 显示预留 5 位,便于查看首次使用时可能出现的 65535。
3. 应用
3.1 点击保存
打开 工程 → 脚本 → main.lua,加入以下代码。已有同名回调时,将逻辑合并到原回调中。
lua 复制代码local LW, RW = 1, 2
function on_init()
local saved = get_uint16(RW, 0x1000)
if saved > 9999 then saved = 0 end
set_uint16(LW, 0x1000, saved)
set_uint16(LW, 0x1001, saved)
end
function on_update(slave, area, addr)
if area ~= LW or addr ~= 0x1002 then return end
if get_uint16(LW, addr) ~= 1 then return end
local value = get_uint16(LW, 0x1000)
if value <= 9999 then
set_uint16(RW, 0x1000, value)
end
set_uint16(LW, addr, 0)
end
on_init 恢复工作值;on_update 收到保存命令后写入 RW,再清零命令。范围外的保存值按 0 启动,0 本身是有效参数。
保存脚本并编译、运行,按下面顺序操作:
- 点击“工作参数”,输入
42,确认。 - 点击“保存参数”,RW 保存值变为
42。 - 点击“清零工作值”,工作参数变为
0,RW 仍为42。 - 关闭模拟器,在 IDE 中点击“运行 → 直接运行”,核对恢复结果。
首次运行或修改工程后需先编译;“直接运行”用于重开已经编译的同一工程。

重新运行后,①工作参数、②RW 保存值、③启动读回均为 42。

3.2 直接保存
仅需“输入后立即写入保存区”时,可直接将数值控件绑定到 RW,无需保存按钮或保存脚本。范例的画面 1 使用 RW1010,键盘设置与画面 0 相同。

| 序号 | 参数 | 本例 | 作用 |
|---|---|---|---|
| 1 | 读取地址 | RW1010 | 显示保存区的数值。 |
| 2 | 写入地址 | 与读取地址相同 | 确认输入后写入 RW1010。 |
| 3 | 数据类型 | UINT16 | 与保存数据类型一致。 |
| 4 | 整数位数 | 5 | 可完整显示初始读值。 |
| 5 | 范围限制 | 固定范围 | 限制键盘输入范围。 |
| 6 | 下限值 | 0 | 允许输入 0。 |
| 7 | 上限值 | 9999 | 允许的最大输入值。 |
点击“直接绑定 RW”,输入 68 并确认。关闭并重新运行模拟器,再进入此页,数值仍为 68。“设为 0”按钮直接向 RW1010 写入 0。

验证范围: 本例已在 ApusTAI 1.0.46 配套模拟器中验证 42、0、9999 的保存恢复、未保存修改不保留,以及 RW1010 直接保存。模拟器进程重启与真机断电不同;屏端使用前,按相同步骤进行断电重上电检查。
4. 常见问题
| 现象 | 原因与处理 |
|---|---|
| 编辑器显示 8888 | 这是数值控件的设计占位;运行后读取实际地址。 |
| 首次 RW 显示 65535 | 本次新工程首次读取为 65535,不能据此判定保存失败。本例有效范围为 0~9999,脚本按 0 恢复;直接 RW 页可点击“设为 0”。 |
| 修改后重启仍是旧值 | 点击保存模式下,需要先点击“保存参数”;仅编辑 LW 不更新 RW。 |
| 清零后又恢复了原值 | “清零工作值”只修改 LW。要保留 0,清零后再保存。 |
| 每次启动都恢复为默认值 | 检查初始化代码是否无条件写 RW;应先读取保存值,再决定是否使用默认值。 |
| 保存 0 后被当成未初始化 | 0 是有效值。若业务范围包含全部 UINT16 数值,应另设初始化标志,不能用 0 或 65535 判断。 |
| 地址相同却读不到 | 同时核对区域、地址和类型。LW1000 与 RW1000 不同;脚本地址写 0x1000。 |
| 改成 32 位后数据互相影响 | 32 位数值占连续 2 个字,下一项地址须避开占用范围,并使用对应的读写接口。 |
| 重开工程后保存值不同 | 模拟器保存数据属于该工程的运行目录;新解包、换目录或清理运行数据后,应重新检查。 |
| 启用分期后地址冲突 | 避开增强分期保留区 RW0300~RW047F;本例使用 RW1000、RW1010。 |
| 是否需要循环写 RW | 参数改变或用户确认时写入即可;不要在每个刷新周期重复写入。 |
5. 范例下载
- 海湾工作台工程包:含两页界面、数字键盘、Lua 和图片资源。
- 本章背景与按钮素材:含海景原图、两张页面背景及按钮图片。
- LW/RW 保存脚本:与工程中的
main.lua一致。
下载工程包后,在 工程 → 打开 中选择 BayRetention.apustai。软件校验并解包后打开工程;首次使用点击“运行 → 确定”编译运行。

背景照片:Filitheyo bar.jpg,Rachel Dearlove(Madmedea),已由作者释为公有领域。本章对照片裁切、调色,界面布局与按钮为原创;来源说明随素材包提供。