Beschreibung der Rückruffunktion (Touchscreen LUA Script Tutorial2)

kostenlosKostenloses technisches Material

Dieser Inhalt ist direkt lesbar und eignet sich für das Grundlagenlernen und die Suche.

Beschreibung der Rückruffunktion (Touchscreen LUA Script Tutorial2)

LUA API-Callback - Funktion Beschreibung

Übersicht

Dieser Artikel beschreibt die Verwendung von Callback-Funktionen in der API-Funktion und die Hinweise zum Aufrufen von Callback-Funktionen und beschreibt die gängigen API-Callback - Schnittstellen wie folgt

  1. Initialisierungsfunktion: on_init()
  2. Systemtick1s-Callback - Funktion: on_systick()
  3. Steuerung löst eine Callback-Funktion aus: on_control_notify(screen, control, value)
  4. Bildschirmwechsel Rückruffunktion: on_screen_change(screen)
  5. Timer-Timeout - Rückruffunktion: on_timer(timer_id)
  6. Zeichnen / Linien / Geometrie-Rückruffunktion: on _ draw(screen)
  7. USB-Funktion: on_usb_inserted(dir) / on_usb_removed() / on_sd_inserted(dir) / on_sd_removed()

Hinweis: Weitere Informationen zu LUA finden Sie im AbschnittLUA Script API Function Interfaceund auf der Website: www.runoob.com/lua

Anwendbarkeit: M-Serie, W-Serie, X-Serie, F-Serie (Firmware-Version > = V4.2.401.0)

Routine Download-Links:LUA API-Callback - Funktionsbeschreibung(Klick auf Sprung)

Hinweis

  • Die Callback-Funktion in apilua kann nicht von anderen Funktionen aufgerufen werden, sie gehört zu einem passiven Auslöser und wird automatisch zurückgerufen, wie der Benutzer die Eingabe eines Textsteuerungsschlüssels, löst die Rückruf-Funktion on_control_notify aus.(screen, control, value)
  • Funktionsnamen, Parameter usw. der Callback-Funktion können nicht geändert werden

1.1 Funktion on_init ()

Das System lädt die LUA-Skriptdatei sofort auf, die normalerweise für die Durchführung von Initialisierungsvorgängen verwendet wird, Nur einmal ausführen

Bildschirmkonfiguration

Fügen Sie zwei Textsteuerelemente in den Bildschirm hinzu, ID1 für die Anzeige der Spannungswerte und ID2 für die Anzeige des Stroms, wie folgt:

Beschreibung der Rückruffunktion (Touchscreen LUA Script Tutorial2)Abbildung

LUA-Skript

Füllt eine API-Funktion in die on_init () - Funktion aus, die den Wert des Textfelds festlegt und die Ausführung beim Systeminitialisieren aufruft. Der spezifische Code

 --[[***************************************************************************
** Function name: on_init()
** Descriptions:   系统初始化时,执行此回调函数。
                   注意:回调函数的参数和函数名固定不能修改
***************************************************************************--]]
function  on_init( )
    set_value(1,1,10) --设置文本控件的值
    set_value(1,2,2)  --设置文本控件的值
end

Laufen Vorschau

Laufen Sie einen virtuellen Bildschirm, der Spannungswert des Bildschirms ist 10, der Stromwert ist 2, wie unten gezeigt, kann der Benutzer den entsprechenden Wert durch daslua-Skript ändern, Weitere Kenntnisse über

Beschreibung der Rückruffunktion (Touchscreen LUA Script Tutorial2)Abbildung1

1.2 Funktion on_systick ()

Das System ruft diese Rückruffunktion automatisch alle 1 Sekunde auf

Bildschirm Konfiguration

Dieses Bildschirm fügt ein Textsteuerelement hinzu, um die Anzahl der Aufrufe auf _ systick () auszulösen, zu sammeln

Beschreibung der Rückruffunktion (Touchscreen LUA Script Tutorial2)Abbildung2

Drehbuch von LUA

Tutorial in der on_systick () - Funktion ein Programm hinzugefügt, um die Anzahl der Ausführungen der Callback-Funktion anzuzeigen, der Code wie folgt

--[[***************************************************************************
** Function name: on_systick
** Descriptions:  定时回调函数,系统每隔1秒钟自动调用。
                  注意:回调函数的参数和函数名固定不能修改
***************************************************************************--]]
function  on_systick( )
    sys_timer = sys_timer +1   
    set_value(2,1,sys_timer)
end

Ausführen Vorschau

on_systick () - Funktion pro Sekunde auslöst, der Effekt wie folgt

Beschreibung der Rückruffunktion (Touchscreen LUA Script Tutorial2)Abbildung3

1.3 - Funktion on_timer(timer_id)

on_timer(timer_id) Timer Überschreiten Callback-Funktion, die allein verwendet wird, funktioniert nicht. Die Funktion, die einen Rückruf auslöst, muss mit start_timer(timer_id, timeout, countdown, repeat) zusammenarbeiten, um den Timer zu aktivieren, wenn der Timer überlaufen ist, wird on_timer(timer_id) ausgelöst

Bildschirmkonfiguration

In dem Bildschirm sind zwei Schaltflächen platziert, ein Enable-Timer, ein Stop-Timer und ein Textfeld, das die Anzahl der Aufrufe nach Ablauf des Timers anzeigt, wie unten gezeigt

Beschreibung der Rückruffunktion (Touchscreen LUA Script Tutorial2)Abbildung4

LUA Script

Tutorial wurde in der on_timer () - Funktion ein Programm hinzugefügt, das die Anzahl der Ausführungen der Callback-Funktion anzeigt, wie folgt

--[[***************************************************************************
** Function name: on_timer
** Descriptions:  定时器超时,执行此回调函数
                  注意:回调函数的参数和函数名固定不能修改
** Input value :  timer_id 定时超时的定时器ID号,定时器编号0~31
***************************************************************************--]]
function  on_timer(timer_id)
     --定时器0超时触发
    if  timer_id == 0
    then
        timer_out = timer_out +1
        set_value(3,3,timer_out)
    end
end

--[[***************************************************************************
** Function name: on_control_notify
** Descriptions:  用户通过触摸修改控件后,执行此回调函数。
                  点击按钮控件,修改文本控件、修改滑动条都会触发此事件。
                  注意:回调函数的参数和函数名固定不能修改
** Input value :  screen 画面ID
                  control 控件ID
                  value  控件值(包括文本控件输入的值)
***************************************************************************--]]
function  on_control_notify(screen,control,value)
 --***********************************************************
 --功能:按下画面4的控件1启动定时器0
 --调用函数:start_timer(timer_id, timeout, countdown, repeat)
 --函数功能:启动定时器
 --参数: timer_id, 定时器ID;
 --      timeout, 超时时间;
 --      countdown,1顺计时,0倒计时
 --      repeat   计时次数,0无限循环 
 --***********************************************************
    if  screen == 3  and  control == 1 and  value == 1 
    then 
        start_timer(0,1000,1,0)       --开启定时时器0工作,设置计时1秒触发一次on_timer
    elseif  screen == 3  and  control == 2 and  value == 1 
    then                            
       stop_timer(0)          --停止定时时器0工作
       timer_out = 0        
    end
    ……
end

Ausführen der Vorschau

Nach dem Öffnen des Timers, wird die Timeout ausgelöst on_timer () wie folgt

Beschreibung der Rückruffunktion (Touchscreen LUA Script Tutorial2)Abbildung5

1.4 Funktion on_control_notify(screen, control, value)

Der Benutzer berührt die Steuerung und führt diese Callback-Funktion aus. Klicken Sie auf Schaltfläche Steuerelemente, ändern Sie Textsteuerelemente, ändern Sie Schieberleiste usw. wird diese Funktion auslösen, wenn die Serial-Port - Anweisung des Monoprocessors den Steuerelementwert ändern, das Skript set _ value oder die Schaltfläche für die eingebaute Anweisung andere Steuerelemente auslösen, etc. wird die Rückruffunktion nicht auslösen, nur die Benutzeroperation Bildschirmsteuerelemente werden auslösen

PS: Für die Taste-Steuerelemente, die eine der folgenden beiden Konfigurationen festgelegt, die Taste-Steuerelemente nicht auslösen on_control_notify ()

1. Wenn Sie [Ereignis Benachrichtigung] auf Nein setzen, wird die Taste nicht ausgelöst, wenn Sie diese Taste drücken, wie folgt:

Beschreibung der Rückruffunktion (Touchscreen LUA Script Tutorial2)Abbildung6

2. Das Projekt-Eigenschaften Konfiguration, Globale Konfiguration Tasten-Eigenschaften [Taste Ereignis Benachrichtigung], wie folgt:

  • Wenn auf „Schließen" gesetzt: Alle Taste-Steuerelemente werden nicht ausgelöst
  • Wenn auf „Nur beim Drücken" gesetzt: Alle Taste-Steuerelemente werden nur beim Drücken ausgelöst
  • Wenn auf „Nur beim Springen" gesetzt: Alle Taste-Steuerelemente werden nur beim Springen ausgelöst
  • Wenn auf „Nur beim Drücken und Springen" gesetzt: Alle Taste-Steuerungen werden beim Drücken und Springen ausgelöst
Beschreibung der Rückruffunktion (Touchscreen LUA Script Tutorial2)Abbildung7

Bildschirmkonfiguration

Auf dem Bildschirm platziert häufige Steuerelemente als Beispiel, wie hinzufügen 1 Taste-Steuerung (ID1), 1 Text-Steuerung (ID2, Tastatur-Eingabe), 1 Symbol-Steuerung (ID3, Berührung erlauben), 1 Schiebe-Steuerelement (ID4), 1 Menü-Steuerelement (ID5), 1 Schiebe-Steuerelement (ID6). Hinzufügen Sie ein Textsteuerelement (ID7), um zu protokollieren, welches Steuerelement auslöst, wie im folgenden

Beschreibung der Rückruffunktion (Touchscreen LUA Script Tutorial2)Abbildung8

LUA-Skript dargestellt

In diesem Abschnitt wird in der Rückruffunktion das entsprechende Steuerelement ausgelöst, das on_control_notify auslöst, und die gedruckten Informationen in das Textsteuerelement ID7 angezeigt, wie folgt angegeben:

--[[***************************************************************************
** Function name: on_control_notify
** Descriptions : 用户通过触摸修改控件后,执行此回调函数。
                  点击按钮控件,修改文本控件、修改滑动条都会触发此事件。
                  注意:回调函数的参数和函数名固定不能修改
** Input value :  screen 画面ID
                  control 控件ID
                  value  控件值(包括文本控件输入的值)
***************************************************************************--]]
function  on_control_notify(screen,control,value)
 --***********************************************************
 --功能:按下画面4的控件1启动定时器0
 --调用函数:start_timer(timer_id, timeout, countdown, repeat)
 --函数功能:启动定时器
 --参数:  timer_id, 定时器ID;
 --       timeout, 超时时间;
 --     countdown,1顺计时,0倒计时
 --     repeat   计时次数,0无限循环 
 --***********************************************************
    ……
    if screen == 4 
    then 
        if control == 1 and value == 1        --value == 1 按钮按下
        then
            set_text(4,7,"按钮按下")
        elseif control == 1 and value == 0    --value == 0 按钮弹起
        then
            set_text(4,7,"按钮弹起")
        elseif  control == 2                  --文本输入
        then
            set_text(4,7,"文本输入")   
        elseif  control == 3                  --图标控件
        then
            set_text(4,7,"触摸图标")
        elseif control == 4                   --滑动选择控件
        then
            set_text(4,7,"滑动选择")
        elseif control == 5                   --菜单控件
        then
            set_text(4,7,"菜单选择")
        elseif control == 6                   --滑块控件
        then
            set_text(4,7,"滑块滑动")
        end
    end
    ……
end

Ausführen der Vorschau

klicken Sie auf die Steuerelemente ID1 ~ ID6, der Effekt ist wie folgt

Beschreibung der Rückruffunktion (Touchscreen LUA Script Tutorial2)Abbildung9

1.5 Funktion on_screen_change (screen)

Wenn der Bildschirm wechselt, führen Sie diese Rückruffunktion

  • screen aus: Zielbild-ID nach dem Bildschirmwechsel. Angenommen, Bildschirm A wechselt zu Bildschirm B, nachdem diese Aktion abgeschlossen ist, wird screen der Bildschirm-ID - Wert von Bildschirm B

Hinweis: Der Aufruf des Bildschirmschaltens change_screen in on_screen_change(screen) wird nicht die Bildschirmschaltenskonfiguration on_screen_change

auslösen.

Die Eigenschaft des Schaltflächensteuerelementes in diesem Artikel ist auf Bildschirm wechseln gesetzt, klicken Sie auf das Schaltflächensteuerelement, um das Bildschirm in den angegebenen Bildschirm zu wechseln, wie unten

Beschreibung der Rückruffunktion (Touchscreen LUA Script Tutorial2)Abbildung10

Testbildschirm, hinzufügen zwei Textsteuerelemente, wenn das Skript die Rückruffunktion on_screen_change auslöst, die Steuerung ID1 zeigt die ID des aktuellen Bildschirms an, die Steuerung ID2 zeigt den Wert an, Konfiguration wie folgt

Beschreibung der Rückruffunktion (Touchscreen LUA Script Tutorial2)Abbildung11

LUA Skript

Bildschirm wird während des Bildschirmschaltens die Rückruffunktion on_screen_change auslösen, wodurch die beiden Textsteuerelemente des Zielbildschirms im Wechselbildschirm geändert werden, der spezifische Code wie folgt

--[[***************************************************************************
** Function name: on_screen_change
** Descriptions:  当画面切换至目标画面ID时,执行此回调函数
                  注意:回调函数的参数和函数名固定不能修改
** Input value :  screen 目标画面ID
*******************************************************************************--]]
function on_screen_change(screen)
    if screen == 8 then             --切换到画面9时,修改控件1,2的数据
        set_value(8,1,screen)       --修改控件1的数据
        set_value(8,2,30)           --修改控件2的数据
    end
end

Ausführen von Vorschau

on_screen_change auslösen, Der Effekt ist wie folgt dargestellt

Beschreibung der Rückruffunktion (Touchscreen LUA Script Tutorial2)Abbildung12

1.6 Funktion on_draw ()

Diese Rückruffunktion wird beim Neuauszeichnen ausgeführt, in der Regel werden alle Zeichnungs - und Zeichnungsgeometrie (Kreis, Rechteck, Linien, Punkte usw.) in dieser Funktion implementiert. Wenn das Bildschirmsteuerelement aktualisiert wird, wird diese Funktion auch ausgelöst, normalerweise in Verbindung mit redraw () verwendet.

  • Screen: Bild, das benötigt wird

Bildschirm-Konfiguration

Hinzufügen von zwei Tasten-Beneußungen in diesem Bildschirm, wenn Sie drücken, zeigen Sie unterschiedliche Bilder

Beschreibung der Rückruffunktion (Touchscreen LUA Script Tutorial2)Abbildung13

LUA-Skript

Bei drücken dieser Taste LUA, geben Sie show _ picture einen unterschiedlichen Wert, wenn Sie redraw () aufrufen, um die Rückruffunktion on _ draw () auszulösen,

--[[***************************************************************************
** Function name: on_draw
** Descriptions : 画面刷新时,或者使用API函数 redraw 申请重绘,执行此回调函数
                  注意:回调函数的参数和函数名固定不能修改
** Input value  : screen 目标画面ID
***************************************************************************--]]
function  on_draw(screen)
    --******************************************************************************
    --调用函数:draw_image(image_id,frame_id,dstx,dsty,width,height,srcx,srcy)
    --函数功能:根据图片ID绘图
    --参数:  image_id 图片资源的 ID
    --frame_id 对应图标, 可以设置帧 ID,其他图片固定为 0
    --dstx   图片显示 X 坐标
    --dsty   图片显示 Y 坐标
    --width    图片显示宽度
    --height   图片显示高度
    --srcx   图片裁剪 X 坐标
    --srcy   图片裁剪 Y 坐标   
    --*****************************************************************************
    if screen == 6 and show_picture  == 1
    then
        draw_image(23,0,190,160,430,230,0,0)
    elseif screen == 6 and show_picture == 2 
    then 
        draw_image(24,0,190,160,430,230,0,0) 
    end
end

function  on_control_notify(screen,control,value)
    if  screen == 5
    then
        if control == 1 and value == 1             --绘制图片1
        then
            show_picture = 1
            redraw()                             --申请重绘
        elseif control == 2 and value == 1         --绘制图片2
        then
            show_picture = 2
            redraw()                               --申请重绘
        end
    end
end

Ausführen der Vorschau

Zeichnungseffekt wie folgt

Beschreibung der Rückruffunktion (Touchscreen LUA Script Tutorial2)Abbildung14

1.7 USB / SD-Karte Rückruffunktion

Wenn der USB-Stick und die SD-Karte eingegeben werden, wird die Funktion on_usb_inserted (dir) oder on_sd_inserted (dir) ausgelöst Wenn Sie das USB-Laufwerk entfernen und die SD-Karte einfügen, lösen Sie die Funktion on_usb_removed() oder on_sd_removed() aus

  • dir: Dieser Parameter gibt den Laufwerkzeichen des USB-Laufwerks oder der SD-Karte an

Hinweis: Speziell SD oder USB-Laufwerk, je nach physischem Bildschirm, und Test-Erlebnis - API, bitte auf dem physischen Bildschirm testen

Engineering-Konfiguration

Bildschirm, hinzufügen zwei Textsteuerelemente, Steuerelement ID1 für die Anzeige von USB-Laufwerk ausgelösten Informationen, Steuerelement ID2 für die Anzeige von SD-Karte ausgelösten Informationen, wie unten

Beschreibung der Rückruffunktion (Touchscreen LUA Script Tutorial2)Abbildung15

LUA-Skript

USB-Laufwerk / SD-Karte einlegen und entfernen LUA-Skript - Code wie folgt:

--[[***************************************************************************
** Function name: on_usb_inserted
** Descriptions : 插入U盘后,执行此回调函数
                  注意:回调函数的参数和函数名固定不能修改
** Input value  : dir  U盘的路径
***************************************************************************--]]
function  on_usb_inserted(dir)
       set_text(7,1,dir)    --显示U盘路径
end
--[[***************************************************************************
** Function name: on_sd_inserted
** Descriptions : 插入SD卡后,执行此回调函数
                  注意:回调函数的参数和函数名固定不能修改
** Input value  : dir  SD卡的路径
***************************************************************************--]]
function  on_sd_inserted(dir)
    set_text(7,2,dir)    --显示SD卡路径  
end
--[[***************************************************************************
** Function name: on_sd_inserted
** Descriptions : 拔出U盘后,执行此回调函数
                  注意:回调函数的参数和函数名固定不能修改
***************************************************************************--]]
function  on_usb_removed()
    set_text(7,1,"已拔出U盘")
end
--[[***************************************************************************
** Function name: on_sd_inserted
** Descriptions : 拔出SD卡后,执行此回调函数
                  注意:回调函数的参数和函数名固定不能修改
***************************************************************************--]]
function  on_sd_removed()
    set_text(7,2,"已拔出SD卡")
end
Relevante Etiketten
Sollte man diese Informationen für ein echtes Projekt verwenden?

Gehen Sie zum Tool Center, um Nachrichten zu analysieren, CRC-Prüfungen und Geräte-Debugging zu erledigen, oder senden Sie Anforderungen für Auswahl - und Zugangsvorschläge.

Ingenieur Mitglied

Verwandeln Sie diesen Artikel in ein umsetzbares Debuggermaterial

Erweiterte Nachrichtenanalyse, Paket-Downloads, Codebeispiele, Engineering-Szenarien und Priority-Technischer Support sind für die Real-Projekt - Bereitstellung möglich.

Unbegrenzte Werkzeuge
Datenpaket und Codepaket
Vollständige Engineering Case-Basis
Vorrangiger Zugang zum technischen Support

Antwort veröffentlichen

Ihre E-Mail - Adresse wird nicht öffentlich gemacht. Erforderliche Elemente wurden verwendet * markiert.