回调函数说明(触控屏LUADrehbuchUnterricht2)

kostenlosKostenloses technisches Material

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

回调函数说明(触控屏LUADrehbuchUnterricht2)缩略图
🌐 Diese Seite ist noch nicht auf Deutsch verfügbar. Die chinesische Version wird angezeigt. Zurück zur chinesischen Seite.
本文目录
  1. 1. 概述
  2. 2. Aufmerksamkeit
  3. 3. 1.1 函数 on_init()
  4. 4. 1.2 函数on_systick()
  5. 5. 1.3 函数on_timer(timer_id)
  6. 6. 1.4 函数on_control_notify(screen,control,value)
  7. 7. 1.5 函数on_screen_change(screen)
  8. 8. 1.6 函数on_draw()
  9. 9. 1.7 U盘/SD卡回调函数

LUA API回调函数说明

概述

本文将介绍大彩LUADrehbuchAPI函数中的回调函数使用方法,以及调用回调函数的Aufmerksamkeit,介绍Häufig的api回调Schnittstelle,如下所示

  1. 初始化函数:on_init()
  2. Das System滴答1s回调函数:on_systick()
  3. Kontrollen触发回调函数:on_control_notify(screen, control, value)
  4. Wechseln画面回调函数:on_screen_change(screen)
  5. 定时器超时回调函数:on_timer(timer_id)
  6. 画图/线/几何图形回调函数:on_draw(screen)
  7. U盘、SD卡的回调函数:on_usb_inserted(dir)/on_usb_removed()/on_sd_inserted(dir)/on_sd_removed()

注:mehr.LUAInformationen可参考Das Drehbuch von LUAAPI函数Schnittstelle Kapitel节 和Webseite:www.runoob.com/lua

适用范围:M系列、W系列、X系列、F系列(固件版本 >= V4.2.401.0)

例程Download链接:《LUA API 回调函数说明》(Klick auf跳转)

Aufmerksamkeit

  • 大彩lua api里的回调函数不可以被其他函数调用,属于被动触发,自动回调,如用户对TextKontrollen键值输入,触发回调函数on_control_notify(screen, control, value)
  • 不能更改回调函数的函数名、Parameter等

1.1 函数 on_init()

Das System上电Laden Das Drehbuch von LUA文件之后,立即调用此回调函数, 通常用于执行初始化Operationen,仅执行一次

画面配置

在画面中添加两个TextKontrollen,ID1用于显示电压值,ID2用于显示电流,如下所示

回调函数说明(触控屏LUADrehbuchUnterricht2)插图

LUADrehbuch

在on_init()函数中填写设置Text框Zahlenwert的API函数,在Das System初始化时调用执行。具体代码下所示

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

Betrieb预览

Betrieb虚拟屏,该画面的电压值为10,电流值为2,如下所示,用户可以通过luaDrehbuch修改对应的值,进一步熟悉了解

回调函数说明(触控屏LUADrehbuchUnterricht2)插图1

1.2 函数on_systick()

Das System每隔 1 秒钟自动调用此回调函数

画面配置

该画面添加一个TextKontrollen,用于累计on_systick()被触发回调的次数

回调函数说明(触控屏LUADrehbuchUnterricht2)插图2

LUADrehbuch

Unterricht中在on_systick()函数里添加了一个显示回调函数被执行次数的程序,具体代码如下所示

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

Betrieb预览

每秒触发on_systick()函数,效果如下所示

回调函数说明(触控屏LUADrehbuchUnterricht2)插图3

1.3 函数on_timer(timer_id)

on_timer(timer_id)定时器超时回调函数,单独使用不生效。该函数触发回调需要配合 start_timer(timer_id, timeout, countdown, repeat) ,来Öffnen.定时器,定时器溢出超时了,才会触发on_timer(timer_id)

画面配置

画面中放置了两个Knopf,一个aktiviert.定时器,一个Stopp!定时器和一个Text框,Text框是显示定时器超时后调用的次数,如下所示

回调函数说明(触控屏LUADrehbuchUnterricht2)插图4

LUADrehbuch

Unterricht中在on_timer ()函数里添加了一个显示回调函数被执行次数的程序,具体代码如下所示

--[[***************************************************************************
** Function name: on_timer
** Descriptions:  定时器超时,执行此回调函数
                  注意:回调函数的Parameter和函数名固定不能修改
** Input value :  timer_id 定时超时的定时器IDNr.,定时器编Nr.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:  用户通过触摸修改Kontrollen后,执行此回调函数。
                  Klick aufKnopfKontrollen,修改TextKontrollen、修改滑动条都会触发此Ereignisse。
                  注意:回调函数的Parameter和函数名固定不能修改
** Input value :  screen 画面ID
                  control KontrollenID
                  value  Kontrollen值(包括TextKontrollen输入的值)
***************************************************************************--]]
function  on_control_notify(screen,control,value)
 --***********************************************************
 --Funktion:按下画面4的Kontrollen1启动定时器0
 --调用函数:start_timer(timer_id, timeout, countdown, repeat)
 --函数Funktion:启动定时器
 --Parameter: timer_id, 定时器ID;
 --      timeout, 超时Zeit;
 --      countdown,1顺计时,0倒计时
 --      repeat   计时次数,0Unendlicher Kreislauf 
 --***********************************************************
    if  screen == 3  and  control == 1 and  value == 1 
    then 
        start_timer(0,1000,1,0)       --Öffnen.定时时器0工作,设置计时1秒触发一次on_timer
    elseif  screen == 3  and  control == 2 and  value == 1 
    then                            
       stop_timer(0)          --Stopp!定时时器0工作
       timer_out = 0        
    end
    ……
end

Betrieb预览

Öffnen.定时器后,超时触发on_timer(),效果如下所示

回调函数说明(触控屏LUADrehbuchUnterricht2)插图5

1.4 函数on_control_notify(screen,control,value)

用户触摸修改Kontrollen后,执行此回调函数。Klick aufKnopfKontrollen,修改TextKontrollen、修改滑动条等等都会触发此函数,如果单片机Die Serie指令修改Kontrollen值、Drehbuch设置set_value或Knopf对内置指令触发其他Kontrollen等均不会触发该回调函数,仅用户Operationen屏幕Kontrollen才会触发

PS:对KnopfKontrollen而言,设置了以下两个配置Von denen一个,KnopfKontrollen均不会触发on_control_notify( )

1.对应单个KnopfKontrollen,若设置【Ereignisse通知】为否,该KnopfKontrollen按下时候,就不会触发on_control_notify( ),如下所示

回调函数说明(触控屏LUADrehbuchUnterricht2)插图6

2.工程属性配置,全局配置Knopf属性【KnopfEreignisse通知】处,如下所示

  • 若设置为”Schließen“:所有KnopfKontrollen均不会触发
  • 若设置为”仅按下时“:所有KnopfKontrollen均仅按下时候触发
  • 若设置为”仅弹起时“:所有KnopfKontrollen均仅弹起时候触发
  • 若设置为”按下和弹起时“:所有KnopfKontrollen按下和弹起时都会触发
回调函数说明(触控屏LUADrehbuchUnterricht2)插图7

画面配置

画面中放置Häufig的Kontrollen做Beispiel,如添加1个KnopfKontrollen(ID1)、1个TextKontrollen(ID2,键盘输入)、1个图标Kontrollen(ID3,允许触摸)、1个滑动AuswahlKontrollen(ID4)、1个菜单Kontrollen(ID5)、1个滑动AuswahlKontrollen(ID6)。在增加一个TextKontrollen(ID7),用于记录哪个Kontrollen触发,如下所示

回调函数说明(触控屏LUADrehbuchUnterricht2)插图8

LUADrehbuch

本Kapitel节,在回调函数显示触发on_control_notify对应的Kontrollen,将按下的信息显示zuTextKontrollenID7中,具体代码如下所示

--[[***************************************************************************
** Function name: on_control_notify
** Descriptions : 用户通过触摸修改Kontrollen后,执行此回调函数。
                  Klick aufKnopfKontrollen,修改TextKontrollen、修改滑动条都会触发此Ereignisse。
                  注意:回调函数的Parameter和函数名固定不能修改
** Input value :  screen 画面ID
                  control KontrollenID
                  value  Kontrollen值(包括TextKontrollen输入的值)
***************************************************************************--]]
function  on_control_notify(screen,control,value)
 --***********************************************************
 --Funktion:按下画面4的Kontrollen1启动定时器0
 --调用函数:start_timer(timer_id, timeout, countdown, repeat)
 --函数Funktion:启动定时器
 --Parameter:  timer_id, 定时器ID;
 --       timeout, 超时Zeit;
 --     countdown,1顺计时,0倒计时
 --     repeat   计时次数,0Unendlicher Kreislauf 
 --***********************************************************
    ……
    if screen == 4 
    then 
        if control == 1 and value == 1        --value == 1 Knopf按下
        then
            set_text(4,7,"Knopf按下")
        elseif control == 1 and value == 0    --value == 0 Knopf弹起
        then
            set_text(4,7,"Knopf弹起")
        elseif  control == 2                  --Text输入
        then
            set_text(4,7,"Text输入")   
        elseif  control == 3                  --图标Kontrollen
        then
            set_text(4,7,"触摸图标")
        elseif control == 4                   --滑动AuswahlKontrollen
        then
            set_text(4,7,"滑动Auswahl")
        elseif control == 5                   --菜单Kontrollen
        then
            set_text(4,7,"菜单Auswahl")
        elseif control == 6                   --滑块Kontrollen
        then
            set_text(4,7,"滑块滑动")
        end
    end
    ……
end

Betrieb预览

依次Klick aufKontrollenID1~ID6,效果如下所示

回调函数说明(触控屏LUADrehbuchUnterricht2)插图9

1.5 函数on_screen_change(screen)

当画面Wechseln后,执行此回调函数

  • screen:画面Wechseln后的目标画面ID。假设画面AWechselnzu画面B,这个动作abgeschlossen.后,则screen为画面B的‘画面ID’值

注意:在on_screen_change(screen)里调用change_screenWechseln画面,不会在触发on_screen_change

画面配置

本文KnopfKontrollen的属性设置为画面Wechseln,Klick auf该KnopfKontrollen就会将画面Wechselnzu指定的画面中,如下所示

回调函数说明(触控屏LUADrehbuchUnterricht2)插图10

测试画面中,添加两个TextKontrollen,在Drehbuch触发回调函数on_screen_change时,设置KontrollenID1显示gegenwärtig画面的ID,KontrollenID2显示Zahlenwert,配置如下所示

回调函数说明(触控屏LUADrehbuchUnterricht2)插图11

LUADrehbuch

屏在Wechseln画面的同时会触发回调函数on_screen_change,从而实现在Wechseln画面是将目标画面的两个TextKontrollen进行修改,具体代码如下所示

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

Betrieb预览

触发on_screen_change,效果如下所示

回调函数说明(触控屏LUADrehbuchUnterricht2)插图12

1.6 函数on_draw()

重绘时执行此回调函数,通常所有绘图、画几何(圆、矩形、线、点等等)Operationen都在此函数中实现。当画面的KontrollenErfrischen的时候,也会触发此函数,一般搭配redraw ( ) 使用。

  • ​ screen :需要画图的画面ID

画面配置

在该画面添加两个KnopfKontrollen,Unterteilung别按下时候,显示不同的图片

回调函数说明(触控屏LUADrehbuchUnterricht2)插图13

LUADrehbuch

在LUA本Knopf按下时,给show_picture赋不一样的值,在调用redraw() 触发回调函数on_draw(),来显示指定的图片

--[[***************************************************************************
** Function name: on_draw
** Descriptions : 画面Erfrischen时,或者使用API函数 redraw 申请重绘,执行此回调函数
                  注意:回调函数的Parameter和函数名固定不能修改
** Input value  : screen 目标画面ID
***************************************************************************--]]
function  on_draw(screen)
    --******************************************************************************
    --调用函数:draw_image(image_id,frame_id,dstx,dsty,width,height,srcx,srcy)
    --函数Funktion:根据图片ID绘图
    --Parameter:  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

Betrieb预览

绘图效果如下所示

回调函数说明(触控屏LUADrehbuchUnterricht2)插图14

1.7 U盘/SD卡回调函数

当插入U盘和SD卡插入时,触发on_usb_inserted(dir)或on_sd_inserted(dir)函数。若拔掉U盘和SD卡插入时,触发on_usb_removed()或on_sd_removed()函数

  • dir: 该Parameter表示U盘或SD卡的盘符

注意:具体是SD还是U盘,以实体屏为准,且测试体验API,请在实体屏上测试

工程配置

画面中,添加两个TextKontrollen,KontrollenID1用于显示U盘触发的Related信息,KontrollenID2用于显示SD卡触发的Related信息,如下所示

回调函数说明(触控屏LUADrehbuchUnterricht2)插图15

LUADrehbuch

U盘/SD卡插入及拔出时的LUADrehbuch代码如下所示

--[[***************************************************************************
** Function name: on_usb_inserted
** Descriptions : 插入U盘后,执行此回调函数
                  注意:回调函数的Parameter和函数名固定不能修改
** Input value  : dir  U盘的路径
***************************************************************************--]]
function  on_usb_inserted(dir)
       set_text(7,1,dir)    --显示U盘路径
end
--[[***************************************************************************
** Function name: on_sd_inserted
** Descriptions : 插入SD卡后,执行此回调函数
                  注意:回调函数的Parameter和函数名固定不能修改
** Input value  : dir  SD卡的路径
***************************************************************************--]]
function  on_sd_inserted(dir)
    set_text(7,2,dir)    --显示SD卡路径  
end
--[[***************************************************************************
** Function name: on_sd_inserted
** Descriptions : 拔出U盘后,执行此回调函数
                  注意:回调函数的Parameter和函数名固定不能修改
***************************************************************************--]]
function  on_usb_removed()
    set_text(7,1,"已拔出U盘")
end
--[[***************************************************************************
** Function name: on_sd_inserted
** Descriptions : 拔出SD卡后,执行此回调函数
                  注意:回调函数的Parameter和函数名固定不能修改
***************************************************************************--]]
function  on_sd_removed()
    set_text(7,2,"已拔出SD卡")
end
Techniken术语(共 1 个)—— Klick auf展开
Die SerieBerechnung机与外部Ausrüstung进行串行Kommunikation的物理Schnittstelle
来源/Werkzeuge信息 —— Klick auf展开
来源 Modbus Chinesisches Netzwerk(modbus.cn) —— Inländisch führend.ModbusKommunikationsprotokoll Technologie Gemeinschaft Klassifizierung LUA-Skript - Dokument / Touchscreen-Entwicklung Dokumentation 字数 8305 字 · 阅读约 21 Unterteilung钟 更新 2026-07-01 永久链接 https://www.modbus.cn/7383.html
Empfohlene Werkzeuge: Modbus Debugger-Assistent WeChat-Applet
Modbus Chinesisches Netzwerk官方推出的Modbus Debugging-Tools,支持 Modbus RTU/TCP 实时KommunikationTests、Register.读写、线圈控制、Daten监控和MeldungUnterteilung析。 keine Installation erforderlich,Mikro-Suche「Modbus DebuggingAssistenten.」Benutzt werden kann.。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
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.