定时器控件

1. 属性

属性

说明

id

控件ID号,不可更改

global

勾选:作用于全局,不勾选:作用于所在页; 不可脚本读写

name

控件名称,可改,默认名称timer+序号

en

使能,不选中,失效;选中,有效。

interval

定时器信号发生间隔。

2. 示例

2.1 在脚本中访问属性(控件名以timer0为例)

2.1.1 设置定时器使能(timer0.en)

例如 打开定时器

timer0.en = 1;//1:打开  0:关闭

2.1.2 设置定时器间隔事件(timer0.interval)

例如 设置定时器间隔200ms

timer0.interval = 20; //定时器间隔单位为10ms即当设置20时实际间隔为200ms       

2.1.2 设置定时器间隔事件(timer0.global)

勾选global

打开定时器后,工程全局运行

不勾选global

打开定时器后,只在控件所在页面运行,跳转到其他页面,则不运行

3. 常见应用

备注

定时器控件运行原理:打开定时器后,以设置的时间间隔,循环运行定时器控件内的脚本

3.1 屏幕需要主动轮询读取下位机数据时

//使用modbus协议时,定时循环读取从机数据
Return = modbusRead(0x01,0x03,0x0000,6,50); 
if(Return == 0) //检测返回值,返回值为0,表示读取成功
{
    //处理从机返回的数据
}

//定时循环外发自定义数据帧
byte a[8] = {0xAF, 0xFA, 0x01, 0x02, 0x03, 0x04, 0x05, 0xDD};
uartSendBytes(a,0,8); 

3.2 配合图片控件,循环切换图片,实现gif效果

if(image1.img == user.image.p1)
	image1.img = user.image.p2;
else if(image1.img == user.image.p2)
    image1.img = user.image.p3;
else if(image1.img == user.image.p3)
    image1.img = user.image.p4;
else if(image1.img == user.image.p4)
    image1.img = user.image.p1;

3.3 延时处理

//例如 当满足某一条件后,延时2S跳转页面

//将定时器interval属性设置为200
if(text.txt == "ok")
{
    timer.en = 1;//打开,定时器会在2S后执行定时器内的脚本
}

//定时器内脚本
showPage(2);
timer.en = 0;//延时处理完成,关闭定时器,不关闭则会一直间隔2S循环执行 showPage(2); 脚本

3.4 RTC,定时读取时间系统变量,获取实时时间,仅支持RTC版本可用 参考例程


3.5 制作音视频进度条,定时获取播放进度显示到进度条

//定时器控件interval属性设置100,当触发视频播放时(比如播放按钮下),打开定时器
timer.en = 1;

//定时器内脚本,读取视频控件的播放进度属性,赋值给进度条控件显示
progressbar3.val = video2.progress;

if(progressbar3.val >= 100)
{
    timer.en = 0;//根据视频播放进度判断,视频播放完后,关闭定时器
}

3.6 数值读秒累加、递减

//将定时器interval属性设置100,即1S执行一次,并勾选en,让定时器一直运行

//累加
num1.val++;

//递减
num2.val--;