运行期整体旋转 UI(0°/90°/180°/270°),手持器、竖装机柜都适用。一套 Lua 适配所有姿态,DX 系列专属。
1. Lua 控制旋转
set_lcd_rotate(angle) -- angle: 0~3 (0=0°,1=90°,2=180°,3=270°)
function on_init()
local angle = get_uint16(VT_RW, 0x0001) -- 从Flash读旋转方向
angle = (angle < 0 or angle > 3) and 0 or angle
set_lcd_rotate(angle)
set_uint16(VT_LW, 0x8888, angle)
end
function on_update(slave,vtype,addr)
if vtype == VT_LW and addr == 0x8888 then
local val = get_uint16(VT_LW, 0x8888)
set_uint16(VT_RW, 0x0001, val) -- 存旋转方向
set_lcd_rotate(val)
end
end
2. 生成多方向文件
横屏工程(0°/180°)编译两次:0° 保留默认 image.bin/project.bin;180° 重命名为 image180.bin/project180.bin 放进 private。竖屏工程(90°/270°)同理生成 image90/image270 放入 private。private 目录最终含 8 个核心文件,启动时默认加载 0°,运行时切方向自动加载对应 bin。
屏幕旋转注意:横屏和竖屏的 Lua 脚本逻辑完全一致,差异只在编译出的 bin 文件(imageXXX.bin/projectXXX.bin)。开发者只维护一套工程,按方向编译四次命名好丢进 private 即可。DX 系列专属。
整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「屏幕旋转」,版权归大彩科技所有。
发表回复