Der Knopf-Coder istphysikalische HardwareSteuerung: Durch Drehung (A / B-Phasen - Orthogonal-Impuls) und Drücken (Bestätigung / Schalter) Betrieb, für die stufenlose Feinabstimmung, schnelle Parameter-Einstellung (Temperatur, Frequenz, Verschiebung). Standardprodukte wie der DC40400DB016 unterstützen die Rotations-Encoder - Schnittstelle, Encoder-Modell EC11.
1. Präsentation von Attributen
| Eigenschaft | Beschreibung |
|---|---|
| Encoder | Codierungssequenznummer 0 bis 3, derzeit nur unterstützt 0 |
| Schreibadresse | Encoderwert Automatische Akkumulation Ausgabe an diese Adresse |
| Datentyp | UINT16 / INT16 / UINT32 / INT32 |
| Obergrenze / Untere Grenze | Encoderwertbereich |

2. Schlüsselverhalten
- Rotation AktionDas System konvertiert seit der Initialisierung automatisch den A / B-Orthogonalimpuls in einen numerischen Wert - zunehmend gegen den Uhrzeigersinn (Schritt 1), zunehmend im Uhrzeigersinn;bis zu der oberen und unteren Grenze der Klamme, ohne Rücksetzen des Zyklus(Industrial Safety Design)
- Drücken Sie: Vollständig durch das Lua-Skript auf Benutzerebene verarbeitet (keine eingebaute Rückrufe im System), über die GPIO-Schnittstelle erkannt - - zum Beispiel DC40400DB016 TasteLow-Level - gültig(drücken = 0, loslassen = 1)

3. LUA-Skript (muss initialisiert werden)
Die Verwendung des Knopf-Encoders muss in on_init initialisiert werden:
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
endPin-Definition: GPIO Hexadezimal hohe 8 - Bit = IO-Gruppe, niedrige 8 - Bit = Pin, PD0 = 0x0300, PD2 = 0x0302, PD3 = 0x0303. Die Rotation Aktion wird vom Kernel asynchron aktualisiert, um das Bindungsregister (z. B. LW1000) nach dem Start zu aktualisieren, ohne dass ein Skript abgefragt wird; die Drückung wird durch btn _ manager: update _ all () in on _ run alle 10 ms erkannt.

Aus dem VisualHMI-Entwicklungsdokument von Guangzhou Dacai Technology (hmi-doc.gz-dc.com) Konfigurationssteuerungstutorial "Rotation Encoder", das Urheberrecht im Besitz von Dacai Technology.
Antwort veröffentlichen