什么是RTC控件?
时间可以通过RTC控件来显示。RTC控件可以通过用户主机修改,也可以通过设置弹出系统键盘,对时间进行输入编辑操作,然后显示在串口屏上。本章节中介绍RTC控件常见的应用,结合工程中的画面介绍每一个应用的配置,常见的应用如下所示
- 时间显示:显示当前时间
- 定时功能:设置一个计时,在屏上显示计时的时间,在达到设定值时通过串口发出通知
适用范围:全系列
例程下载链接:《RTC控件应用》(点击跳转)
6.1 RTC控件属性介绍
RTC控件可以显示当前时间和倒计时,如下所示
显示时间
显示当前时间
格式
时间的显示格式,如下所示
- HH:MM:SS,显示小时、分钟和秒数
- 20XX-MM-DD,显示年份、月份和日数
- 20XX-MM-DD HH:MM:SS,显示年份、月份、日数、小时、分钟和秒数
- 20XX-MM-DD HH:MM:SS 星期几,显示年月日,时间以及星期几
- 星期几(中文+英文),显示星期几的中文和英文;
- 自定义格式。例如“年-月-日,时-分-秒,星期”的格式为:%y-%n-%d,%h:%m:%s,%w(年=%y,月=%n,日=%d,时=%h,分=%m,秒=%s,星期=%w),如下所示
语言
中文、英文
时差
与当前系统时间的差值,范围[-12~+12]
字体
字体大小和字体样式
前景颜色
字体颜色
允许编辑
点击RTC显示区域,弹出日期/时间设置界面,如下所示
按压方式
- 长按
- 点击进入编辑
计时
格式
计时时间的显示格式,如下所示
计时长度
计时时间长度(秒)
显示方式
倒计时、顺计时
字体
字体大小
前景颜色
字体颜色
6.2 时间显示
【时间显示】画面,介绍设置显示当前时间的方法
画面配置
在【时间显示】画面的“背景图片”导入相应的美工图片。在该画面中添加RTC控件,如下所示
属性配置
以控件ID为1的RTC控件为例,设置【格式】为“20XX-MM-DD HH:MM:SS 星期几”、【字体】为“ASC_CHS_30”、【前景颜色】为白色,配置如下所示
运行预览
运行虚拟屏,虚拟屏中该RTC控件显示当前系统时间,运行效果如下所示
PS:虚拟屏直接显示电脑时间,且不支持修改,若需要RTC修改应用,下载到实体屏体验
MCU获取RTC系统时间
参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。例如用户需获取串口屏的系统时间,则直接调用获取RTC函数ReadRTC()即可,代码如下所示
/*********************************************************************
** Function name : void ReadRTC(void);
** Descriptions : 获取串口屏中的系统时间
** input parameters : 无
** output parameters: 无
********************************************************************/
{
……
ReadRTC();
……
}
6.3 定时功能
【定时功能】画面,介绍按下按钮后启动、暂停计时器的功能
画面配置
在【定时功能】画面的“背景图片”导入相应的美工图片。在该画面中RTC控件ID1,按钮控件ID3、4,作为顺计时功能;RTC控件ID2,按钮控件ID5、6作为倒计时功能,如下所示
属性配置
以顺计时为例,倒计时参考顺计时说明即可
设置RTC控件ID1的【格式】为“MM:SS(计时)”、【计时长度】为“30”、【显示方式】为“顺计时”、【字体】为“ASC_CHS_36”,配置如下所示
设置按钮控件ID3为开始计时功能,设置其【触摸虚框】为“否”、【按下时的图片】选择设置好的图片、勾选【裁剪】;填写按钮按下的对内指令为“开启定时器”,操作如下所示
同理,设置按钮控件ID4为开始计时暂停功能,其设置流程和“开启定时器”类似,只需对内置指令改为“暂停定时器”
运行预览
运行虚拟屏,VisualTFT软件和虚拟屏用“虚拟串口”建立联机。打开【指令助手】,选择左侧导航栏【RTC时钟控件】,在“设定定时器”的操作类型中选择“设置定时器”。如例程中,控制画面(画面ID:1)中的RTC控件(控件ID:2),填写【数值】为对数值,点击“发送”。则虚拟屏该RTC控件显示“00:30”,运行效果如下所示
外部MCU控制
参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义
MCU设置计时时间
例如用户需设置串口屏的计时时间,则直接调用设置RTC计时的函数SeTimer()即可,函数定义如下所示
/*********************************************************************
** Function name : void SeTimer(uint16 screen_id,
** uint16 control_id,
** uint32 timeout);
** Descriptions : 设置计时控件
** input parameters : screen_id 画面ID
** control_id 控件ID
** timeout 倒计时(秒)
** output parameters: 无
*********************************************************************/
{
……
SeTimer(1,1,50); //设置画面1的RTC控件1的值为50S
……
}
MCU开启计时
例如用户需开启串口屏的计时时间,则直接调用开启RTC计时的函数StartTimer()即可,函数定义如下所示
/*********************************************************************
** Function name : void StartTimer(uint16 screen_id,
** uint16 control_id);
** Descriptions : 开启计时控件
** input parameters : screen_id 画面ID
** control_id 控件ID
** output parameters: 无
*********************************************************************/
{
……
StartTimer(1,1); //开启画面1的RTC计时控件1
……
}