名称 | 操作 | 版本 | 日期 | 说明 | 编辑 |
《定时器控件使用说明》 | 创建中 | V1.0 | 2019-02-18 | 第一次编辑完成,正式发布。 | yxj |
《定时器控件使用说明》 | 修订 | v1.1 | 2020-07-14 | 补充本控件中所有属性详解 | qjj |
【目录】
一、定时器控件-概述
3.1、控件属性描述
3.2、控件属性编辑
3.2.1、编辑属性
3.2.2、读属性
3.2.3、写属性
3.3 、属性详解
3.3.1、vscope属性
3.3.2、objname属性
3.3.3、id属性
3.3.4、type属性
3.3.5、tim属性
3.3.6、en属性
4.1、在页面上新建定时器控件
4.2、定时器实现按钮长按功能
4.3、定时器实现闪烁效果
4.4、定时器其他用途
4.5、定时器使用过程中常见问题
1.1、定时器控件是串口屏诸多功能控件里面的其中一个。
1.2、定时器控件会在设定时间 每隔一段时间运行定时事件。
1.3、在《USART HMI》软件左侧工具箱里面(如下图所示)。
注:定时器只能在当前页面运行不可后台运行。
如果想要定时器一直运行,每个页面都加个定时器。
定时器特有定时事件。
用定时器控件,做自己的第一个显示工程(如下图所示)。
在当前页面数字控件n0会每隔1秒进行加一。
串口屏所有控件操作的实质都是对属性的修改。定时器控件具有的属性如下表所示。
如下图所示,当鼠标选中对应属性时,会在属性窗口的最下方出现该属性的详细描述信息。
用户可以随时调整、编辑列表中的属性参数。
注意:type和id属性由开发环境指定,用户不可修改。id可通过软件左上角置顶置底间接修改。
如控件属性表所示的属性,可以在设备运行中随时读取。
sys0=tm0.id 将定时器控件tm0的id号赋值给sys0变量 prints tm0.tim,0 将tm0的定时时间从串口发送出去。
注意:objname属性不可以读取。比如在事件代码中写"b0.txt=tm0.objname"编译将报错。
所有绿色控件可以在运行中实时修改。
vscope属性。控件内存占用属性。控件支持私有和全局属性。
当设置为全局时,控件分配的内存在所有页面都可以访问。离开当前页面后,控件属性数据也不会丢失。缺点是,占用系统总内存。
objname属性。控件名称属性。该属性在运行中不能获取。
id属性。控件id是每个控件在当前页面的唯一标识号。由系统分配,不可修改。(可通过软件左上角置顶置底间接修改)
type属性。控件类型属性。由系统分别固定数据,比如定时器控件属性为5。
tim属性。定时时间,单位:ms(最小50,最大65534)。在设置的时间内,每隔一段时间运行定时事件。
en属性。使能开关:0为关闭,1为开启。
点击定时器控件,他就将会出现在特殊控件窗口。
定时器是在当前页面后台运行的。(不可跨页面后台运行)当离开当前页面后定时器就不会运行。
①按钮控件事件设置
按下事件定时器开始运行,弹起事件定时器关闭运行。
②定时器控件设置
定时器en默认值为0(关闭),tim(定时时间)为1000ms。
功能说明:当按钮按够5秒的时候,控件success的值进行加1。如果按钮按的时候不足五秒,n0的值进行清零。
准备两张不一样图片
定时器属性设置和定时器定时事件
功能说明:50ms进行一次图片切换。也可以通过vis指令实现一样效果。
①在主动解析模式下(什么是主动解析),定时器能够在当前页面定时处理串口数据。
例:
在调试界面
选择hex发送
输入对应的hex即可更换不同的图片
如:
黑色:55000d0a
红色:55010d0a
黄色:55020d0a
你也可以修改演示界面中定时器中的代码来修改协议
注:黑色的图片id为0 红色的图片id为1 黄色的图片id为2 详情参考例程主动解析点灯。点击下载
②屏幕上一些效果需要立即做出反应,可考虑使用定时器。如控件n0的值等于5的时候将sys0清零等操作。
③也可实现类似控件拖动的视觉效果(仅x系列支持),详情可参考官方出厂样例中滑动选择界面(下载链接)。
①定时器0里面加入使能定时器1的语句为什么不执行。
可能原因:每次使能定时器后,时间都会从头算。定时器0定时时间设置比定时器1定时时间短。
解决办法:定时器0中使能定时器1时先判断定时器1的状态。
if(timer1.en==0)
{
timer1.en=1
}
②定时器是否可以全局运行。
目前定时器不支持全局运行,vscope设置全局只是为了保存一些运行修改的定时时间tim和使能开关en。如果需要全程使用到定时器运行的话,则每个界面都添加定时器和类似的代码。
③定时器的定时时间是否能小于50ms运行。
定时器定时时间设置范围为50—65534ms,不能设置小于50ms。目前没有办法设置小于50ms定时时间。
④多个定时器只有一个定时器在运行。
可能原因(1):判断运行定时器里面是否出现死循环,例如whlie语句,for循环等。
可能原因(2):定时器中是否有使能其他定时器的语句,如果有参考上面问题①。
END