本文主要阐述的是大彩串口屏如何使用lua脚本实现定时和计时的操作功能,目前这两个应用在工业上或者生活中都有广泛应用。大彩屏定时功能是设置一个具体的时间,然后时间到了用户设定的时间之后,对应就会以消息的方式通知设备,设备可以按照具体的执行方式动作;大彩屏计时功能是设置一个计时的时间范围,对应启动计时之后,时间就会以倒计时的方式来计时,时间计时到0之后,同样以消息的方式通知设备,设备可以按照具体的执行方式动作。
3.1 界面配置
大彩串口屏定时的功能主要是:用户在界面上设置定时时间,点击“启动”按钮触发。当定时时间到了的话,屏幕会通过串口发送通知指令给设备。
本例子界面配置主要是通过文本控件和按钮控件来实现,文本控件通过系统键盘来输入定时参数,按钮控件实现触发动作确认。界面设置如图3-1所示。
图3-1 定时界面配置
本例子中使用的控件为文本控件和按钮控件。
(1) 文本控件主要是用于参数的输入,对应的输入方式设置成系统键盘输入。相应的属性设置如图3-2所示。
图3-2 文本控件属性
(2) 按钮控件主要是用于触发动作的操作,按钮控件有两个状态:弹起/按下,操作风格设置成开关,弹起状态是启动,按下状态是停止;相应的属性设置如图3-3所示。
图3-3 按钮控件属性
3.2 脚本编写
脚本实现的功能:用户在界面上设置定时时间,然后点击启动按钮去触发定时。当定时时间到了的话,屏幕会通过串口发指令给设备,界面的按钮显示也会由停止变成启动;同时,用户也可以点击按钮来停止当前操作,重新设置定时时间,点击启动会以新设置的时间定时。
脚本实现的思路:通过控件通知函数on_control_notify(screen,control,value) 来执行按钮按下或者弹起的操作,对应开启定时器start_timer(timer_id,timeout,countdown,repeat) 进入到on_timer(timer_id) 的函数,按照相应的timer_id来执行操作。通过get_value(screen,value) 获取到用户设置的时间,然后get_data_time()获取的是当前的rtc时间,最后判断用户设置的时间是否和当前的rtc时间一致,一致的话,对应就会触发uart_send_data(packet)发送串口指令aa 01。相应的变量函数如图3-4,图3-5所示。
图3-5 定时功能函数
大彩串口屏计时的功能主要是:用户在界面上设置计时时间,点击“启动”按钮触发,时间就会进入倒计时,当定时时间到了的话,屏幕会通过串口发送通知指令给设备。
本例子界面配置主要是通过文本控件和按钮控件来实现,文本控件通过系统键盘来输入计时参数,按钮控件实现触发动作确认。界面设置如图4-1所示。
图4-1 计时界面配置
4.1.1 控件配置
大彩串口屏计时界面的控件配置和定时界面是一样的,对应可以参考定时界面的控件配置。
4.2 脚本编写
脚本实现的功能:用户在界面上设置计时时间,然后点击启动按钮去触发倒计时。当计时时间达到的话,屏幕会通过串口发指令给设备,界面的按钮显示也会由停止变成启动;同时,用户也可以点击按钮来停止当前操作,重新设置计时时间,点击启动会以新设置的时间计时。
脚本实现的思路:通过控件通知函数on_control_notify(screen,control,value)来执行按钮按下或者弹起的操作,同时将设置的时间值转化成秒变量count,然后对应开启定时器start_timer(timer_id,timeout,countdown,repeat)进入到on_timer(timer_id)的函数,按照相应的timer_id来执行操作。通过定时一秒进入一次on_timer(timer_id),每次进入都会触发count的值减1,当count等于0就代表计时时间达到了,对应就会触发uart_send_data(packet)发送串口指令ab 01。相应的变量函数如图4-2,图4-3所示。
图4-2 计时按钮控件触发函数
图4-3 计时功能函数
工程设置完毕之后,可以通过虚拟屏来调试编写的lua脚本,用户在设置完相应的定时时间,当时间达到的话,虚拟屏串口会发出aa 01的指令,如图 5-1所示。
图5-1 定时功能调试
5.2 计时功能调试
工程设置完毕之后,可以通过虚拟屏来调试编写的lua脚本,用户在设置完相应的计时时间,当计时时间为0的话,虚拟屏串口会发出ab 01的指令,如图5-2所示。
图5-2 计时功能调试