在工业设备中,时间是必不可少的,我们在之前的项目中我们也添加了RTC,和网络校时功能,现在我们要在屏幕上添加时钟控件,可以方便查看时间。
一.我们在页面布局的时候添加了两种时钟。
一个是图形的,一个是数字显示的,那么怎么让他走起来,怎么校时呢?当我们拖入控件之后,已经帮我们完成了一部分的代码了。
1.打开menu_1View.cpp(我们添加空间的那个界面对应的文件)
void menu_1View::setupScreen()
{
menu_1ViewBase::setupScreen();
//数字时钟
digitalClock1.setTime24Hour(12, 10, 10);//校时
digitalHours = digitalClock1.getCurrentHour();
digitalMinutes = digitalClock1.getCurrentMinute();
digitalSeconds = digitalClock1.getCurrentSecond();
//图形时钟
analogClock1.setTime24Hour(12, 10, 10);
analogHours = analogClock1.getCurrentHour();
analogMinutes = analogClock1.getCurrentMinute();
analogSeconds = analogClock1.getCurrentSecond();
}
//添加
void menu_1View::handleTickEvent()
{
tickCounter++;
if (tickCounter % 60 == 0)
{
if (++digitalSeconds >= 60)
{
digitalSeconds = 0;
if (++digitalMinutes >= 60)
{
digitalMinutes = 0;
if (++digitalHours >= 24)
{
digitalHours = 0;
}
}
}
if (++analogSeconds >= 60)
{
analogSeconds = 0;
if (++analogMinutes >= 60)
{
analogMinutes = 0;
if (++analogHours >= 24)
{
analogHours = 0;
}
}
}
// Update the clocks
digitalClock1.setTime24Hour(digitalHours, digitalMinutes, digitalSeconds);
analogClock1.setTime24Hour(analogHours, analogMinutes, analogSeconds);
}
}
setupScreen()函数,当我们切换到当前界面后,就会触发这个函数,实现时钟的校时。
handleTickEvent()为定时器,周期性的进行触发,用来使时钟走时。
当然还需要在对应的.hpp文件中添加函数和参数定义menu_1View.hpp
2.这个时候可以走,但是怎么将屏幕时间,与我的本地时间进行同步呢??
注:我的本地时间上电已经进行了网络校时。
在mian.c中添加上电自动校时功能
time_t cur_time;
cur_time = ntp_sync_to_rtc(NULL);
在menu_1View.cpp中进行本地时间获取,并设置屏幕显示时钟。
这个时候发现时钟可以正常的走了,但是我的每个界面都有数字时钟,该怎样让每个界面的时钟都能够同步的刷新呢???
目前电池电量,时钟,wifi属于共用的,之后使用共用组件,将这部分进行统一制作为一个控件。