本文目录
- 1. 1. 属性介绍
- 2. 2. 关键行为
- 3. 3. LUA 脚本(必须初始化)
旋钮编码器是物理硬件控件:靠旋转(A/B 相正交脉冲)和按压(确认/切换)操作,用于无级微调、快速参数设定(温度、频率、偏移量)。标准产品如 DC40400DB016 支持旋转编码器接口,编码器型号 EC11。
1. 属性介绍
| 属性 | 说明 |
|---|---|
| 编码器 | 编码序号 0~3,目前只支持 0 |
| 写入地址 | 编码器值自动累加输出到该地址 |
| 数据类型 | UINT16/INT16/UINT32/INT32 |
| 下限值/上限值 | 编码器值范围 |

2. 关键行为
- 旋转动作:系统自初始化后自动把 A/B 正交脉冲转为数值——逆时针递增(步长1)、顺时针递减;到上下限钳位,不循环重置(工业安全设计)
- 按下动作:完全由用户层 Lua 脚本处理(系统无内置回调),通过 GPIO 接口检测——以 DC40400DB016 为例按键低电平有效(按下=0,释放=1)

3. LUA 脚本(必须初始化)
使用旋钮编码器必须在 on_init 里初始化:
function on_init()
dofile("bspButtonV2.lua") -- 加载按键库
btn_manager = ButtonManager:new()
btn_manager:add("key1", Knob.pinKey, {
active_level = Knob.pinKeyActive, -- 0=低电平有效
long_press_time = Knob.pinKeyLongTime,-- 300ms 长按阈值
enable_repeat = true, -- 长按连续触发
enable_double_click = true, -- 双击检测
debug = false })
btn_manager:get("key1")
:on(Button.EVENT.SHORT_PRESS, KnobKey_Press)
:on(Button.EVENT.SHORT_RELEASE, KnobKey_Release)
:on(Button.EVENT.LONG_PRESS, KnobKey_LongPress)
:on(Button.EVENT.LONG_RELEASE, KnobKey_LongRelease)
:on(Button.EVENT.CLICK, KnobKey_Click)
:on(Button.EVENT.DOUBLE_CLICK, KnobKey_Double)
:on(Button.EVENT.REPEAT, KnobKey_Repeat)
set_rotate_decoder(0, Knob.pinA, Knob.pinB, Knob.ktype) -- 编码器初始化
start_rotate_decoder() -- 启动编码器
set_run_cycle(10) -- 主循环 10ms
end
引脚定义:GPIO 的 16 进制高 8 位=IO 组、低 8 位=引脚,PD0=0x0300、PD2=0x0302、PD3=0x0303。旋转动作启动后由内核异步更新绑定寄存器(如 LW1000),无需脚本轮询;按下动作靠 on_run 里 btn_manager:update_all() 每 10ms 检测。

旋钮编码器必须实体屏测试(虚拟屏没有真实 IO)。上电时建议加一个单次定时器把绑定地址清 0——避免编码器抖动导致初值不为 0。另注意:旋钮到上下限是钳位不是循环,和画面里控件的循环调节是两码事。
整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「旋转编码器」,版权归大彩科技所有。
发表回复