全部手册
SIMTUTAI / DOCUMENTATION

开发手册

开发手册、使用视频,应用案例。

掉电保存用于保留设定值、语言选择等参数。本节用“海湾工作台”演示 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。下图展示本例的完整功能设置。

工作参数:完整 IDE 窗口及 22 项功能设置编号
序号 参数 本例 作用
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 保存按钮

放置“字设置按钮”,文字设为“保存参数”。

保存参数按钮:完整 IDE 窗口及功能设置编号
序号 参数 本例 作用
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 本身是有效参数。

保存脚本并编译、运行,按下面顺序操作:

  1. 点击“工作参数”,输入 42,确认。
  2. 点击“保存参数”,RW 保存值变为 42。
  3. 点击“清零工作值”,工作参数变为 0,RW 仍为 42。
  4. 关闭模拟器,在 IDE 中点击“运行 → 直接运行”,核对恢复结果。

首次运行或修改工程后需先编译;“直接运行”用于重开已经编译的同一工程。

真实操作:输入 42、保存、清零工作值、关闭并重新运行

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

重启结果:工作参数、RW 保存值和启动读回均为 42

3.2 直接保存

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

直接保存:完整 IDE 窗口及 RW 地址、类型、范围设置编号
序号 参数 本例 作用
1 读取地址 RW1010 显示保存区的数值。
2 写入地址 与读取地址相同 确认输入后写入 RW1010。
3 数据类型 UINT16 与保存数据类型一致。
4 整数位数 5 可完整显示初始读值。
5 范围限制 固定范围 限制键盘输入范围。
6 下限值 0 允许输入 0。
7 上限值 9999 允许的最大输入值。

点击“直接绑定 RW”,输入 68 并确认。关闭并重新运行模拟器,再进入此页,数值仍为 68。“设为 0”按钮直接向 RW1010 写入 0。

真实操作:直接输入 RW、关闭并重新运行、核对保存值

验证范围: 本例已在 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. 范例下载

下载工程包后,在 工程 → 打开 中选择 BayRetention.apustai。软件校验并解包后打开工程;首次使用点击“运行 → 确定”编译运行。

打开工程包:选择 apustai 文件并进入海湾工作台

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