分期(租赁锁机):到约定时间自动锁屏,输密码才解锁。适合设备试用、分期付款。系统方案是「到期前锁定」,自定义方案(见 04)是「到期才锁」。
1. 配置
工程 → 工程设置 → 分期使用:启用分期、分期数(最大10)、到期锁定画面 ID、每期到期日和密码。
2. 锁定界面与系统寄存器
锁定画面放两个数值控件:密码输入绑定 $SysStageEnterPwd(LW0205,UINT32)、当前期号绑定 $SysStageTimeLevel(LW0204,UINT16,缩放1偏移1)。
3. 分期时间掉电存储(LUA)
改分期时间需写系统寄存器 SysCfgCtrl(0x011A)/SysCfgOption(0x011B):
function on_update(slave,vtype,addr)
if vtype == VT_LW then
if addr >= 0x0210 and addr <= 0x0218 then -- 5个分期时间地址
set_uint16(VT_LW, 0x011B, (1<<5)) -- 选择分期密码
set_uint16(VT_LW, 0x011A, 0x5501) -- 保存
end
end
end
4. 分期密码(不读只写)
set_stage_pwd(level, pwd):level 0~9 对应分期1~10,pwd 为数字密码。首次使用把密码写入 RW 区(检测标识位 0x0055 防重复初始化):
function on_init()
local _val = get_uint16(VT_RW, 0x2000)
if _val ~= 0x0055 then
set_uint32(VT_RW, 0x0000, 1111)
set_uint32(VT_RW, 0x0002, 2222)
set_uint32(VT_RW, 0x0004, 3333)
set_uint32(VT_RW, 0x0006, 4444)
set_uint32(VT_RW, 0x0007, 5555)
set_uint16(VT_RW, 0x2000, 0x0055)
end
set_uint16(VT_LW, 0x011B, (1<<5))
set_uint16(VT_LW, 0x011A, 0x5502) -- 从set_stage_pwd后的密码加载
end
5. 恢复与开关
恢复分期写 SysCfgCtrl=0x5503;动态开关通过写 LW0200(分期数 0 或 1)+ 保存实现。所有涉及分期的写 RW/系统寄存器操作都要配合 SysCfgCtrl/SysCfgOption 保存。
分期密码是只写不读的:你想让用户改密码或初始化,得自己在 RW 区镜像一份,再用 set_stage_pwd 同步。每次改完记着调 SysCfgCtrl(0x011A)/SysCfgOption(0x011B) 保存,否则掉电丢。
整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「分期应用(系统)」,版权归大彩科技所有。
发表回复