4 定时器应用

大彩LUA脚本的定时器编号索引ID从0~31,共32个定时器。当开启的定时器,超时溢出后,触发定时器回调,在回调函数里面执行相应操作。本章节,用按钮按下弹起的状态作为灯,开启定时器实现跑马灯效果。用到的相关函数如下所示:

1.在用户触摸修改控件回调函数:on_control_notify(screen,control,value):函数有三个参数:

  • screen:表示画面ID
  • control:表示控件的编号
  • value:表示控件的值。

2.定时器回调函数:on_timer(timer_id)

  • timer_id:表示超时定时器ID。ID值为0~31

3.开启定时器:start_timer(timer_id, timeout, countdown, repeat)

  • timer_id:表示定时器ID,0~31
  • timeout:表示超时时间,单位毫秒
  • countdown:表示计时的方向,0顺计时,1 倒计时
  • repeat:表示重复次数,0 表示无限重复

4.关闭定时器:stop_timer(timer_id)

  • timer_id:表示定时器ID

5.设置控件值:set_value(screen,control,value)

  • screen:目标画面ID
  • control:目标控件ID
  • value:控件值

注:更多LUA资料可参考LUA 脚本API函数接口 章节 和网站:www.runoob.com/lua

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

例程下载链接:《定时器应用》(点击跳转)

4.1 定时器跑马灯

画面配置

画面中添加两个按钮控件,控件ID1为开启/关闭定时器按钮,控件ID2为实现跑马灯效果,如下所示

  • 按钮控件ID1:操作风格配置为开关效果,裁剪对应按下弹起图片的效果
  • 按钮控件ID2:操作风格配置为置位,裁剪对应按下弹起图片的效果

timer01

LUA脚本

按钮控件ID1按下,触发 on_contrl_notify(screen,control,value),再调用start_timer开启定时器,当按钮控件ID1弹起时候,调用stop_timer(0) 关闭定时器,代码段如下所示

 --[[***************************************************************************
** Function name: on_control_notify
** Descriptions:  用户通过触摸修改控件后,执行此回调函数。
                  点击按钮控件,修改文本控件、修改滑动条都会触发此事件。
                  注意:回调函数的参数和函数名固定不能修改
** Input value :  screen 画面ID
                  control 控件ID
                  value  控件值(包括文本控件输入的值)
***************************************************************************--]]
function  on_control_notify(screen,control,value)
    if screen==0 and control==1 and value==1        --按下第0页、编号1按钮
    then
        start_timer(0,1000,1,0)                      --开启定时器0,超时时间1s

     elseif screen==0 and control==1 and value==0    --弹起第0页、编号1按钮
    then
       stop_timer(0)                                --关闭定时器
    end
end

定时器开启后,1s后,超时进入定时器回调函数on_timer(),在回调函数中循环设置灯的状态,代码段如下所示

function on_timer(timer_id)
then

    if timer_id==0              --定时器0超时
    then
        if lamp_status==0       --当按钮为弹起状态
        then
            set_value(0, 2, 1)  --设置按钮2为按下状态,灯亮
            lamp_status=1
        elseif lamp_status==1   --当按钮为按下状态
        then
            set_value(0, 2, 0)  --设置按钮2为弹起状态,灯灭
            lamp_status=0
         end
    end
end

运行预览

点击定时器按下时,开启跑马灯效果,当按钮弹起的时候关闭跑马灯,运行效果如下所示

Copyright ©Dacai all right reserved,powered by Gitbook该文件修订时间: 2023-03-30 10:42:51

results matching ""

    No results matching ""