VisualHMI - 屏幕旋转(定制)
在产品设计中,HMI 屏幕可能面临两类典型应用情形:
- 移动操作场景:HMI 被用作“手持器”或“平板”,用户在操作过程中会根据握持习惯或任务需求动态调整屏幕朝向;
- 固定安装场景:HMI 被以特定角度(如横装、竖装、倒置等)永久安装于设备或机柜上,安装方向由现场空间或人机工效决定。
为满足上述两种情况,HMI支持在运行过程中将整个 UI 界面统一旋转至 0°、90°、180° 或 270° 方向显示(如 HMI10600KM070_D011_4T对应横屏 1024×600 或竖屏 600×1024)。用户仅需开发并维护一套Lua程序,即可适配所有使用姿态与安装方式,显著提升开发效率与部署灵活性。横屏(0°/180°)与竖屏(90°/270°)所使用的 Lua 脚本逻辑完全一致,无需针对不同方向编写或修改脚本代码。两者的差异仅体现在编译生成的bin文件中:
image.bin:包含经旋转处理后的图片资源(如背景图、图标)等;project.bin:包含画面/控件的位置、属性。
因此,开发者只需维护一套脚本逻辑,系统在加载对应方向的 imageXXX.bin 与 projectXXX.bin 时,即可自动呈现正确的界面布局与交互行为,确保功能一致性与开发效率。

使用范围:VisualHMI - DX系列
1.应用
本章节以型号 800400DH070(物理分辨率 800×480)为例,演示如何为 HMI 设备准备支持 0°、90°、180°、270° 四种显示方向的运行文件。通过分别编译横屏与竖屏工程并按规范命名输出文件,最终实现设备在运行时根据需要加载对应方向的界面。
1.1.创建工程
1.1.1.创建横屏
- 横屏工程A(用于 0° 和 180°)

1.1.2.竖屏工程
创建竖屏工程B(用于 90° 和 270°)

1.2.编辑Lua
set_lcd_rotate(angle):设置旋转角度
- angle:0~3。0-0°,1-90°,2-180°,3-90°
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
then
if addr == 0x8888
then
local val = get_uint16(VT_LW, 0x8888)
set_uint16(VT_RW, 0x0001, val) --将旋转的角度标记存储
set_lcd_rotate(val)
end
end
end
1.3.生成下载包
横屏工程A(用于 0° 和 180°),编译两次,分别设置工程属性 → 屏幕旋转为
0°:生成默认
image.bin和project.bin,保留于private目录;
180°:重新编译,将生成的
image.bin和project.bin重命名为image180.bin和project180.bin,并放入 0° 工程的private目录中。
竖屏工程B(用于 90° 和 270°),编译两次,分别设置工程属性 → 屏幕旋转为
90°:生成文件重命名为
image90.bin和project90.bin;一并放入 0° 工程的private目录中。
- 270°:生成文件重命名为
image270.bin和project270.bin;一并放入 0° 工程的private目录中。
- 270°:生成文件重命名为

2.下载运行
完成上述操作后,private 目录下应包含以下 8 个核心文件:

HMI 启动时默认加载 image.bin / project.bin(即 0°);通过运行时调用系统接口(如 Lua 脚本),可动态切换至其他方向,此时系统自动加载对应的 imageXXX.bin 与 projectXXX.bin 文件;SD卡下载上述privete后,运行效果如下所示:
