17.RT-thread 项目实战--TouchGfx添加时钟控件

在工业设备中,时间是必不可少的,我们在之前的项目中我们也添加了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属于共用的,之后使用共用组件,将这部分进行统一制作为一个控件。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值