TTGO T-Watch-2020 编程系列(三) Hello World,添加日期在主屏幕

  1. 本文深度依赖 TTGO T-Watch-2020 编程系列(二) 开发环境的搭建Windows, 没看过的请先看https://blog.csdn.net/coolwaterld/article/details/109067854
  2. 不知道什么是TTGO T-Watch-2020的请参看TTGO T-Watch-2020 编程系列(一)基于ESP32可编程手表简介,https://blog.csdn.net/coolwaterld/article/details/109065963 决定是否需要看本文
  3. 本文设计修改代码,如题所示添加日起相关代码到SimpleWatch程序

原始程序效果

修改之后的效果

通过查找time,找到需要修改的位置 在gui.cpp

static lv_obj_t *timeLabel = nullptr;
static lv_obj_t *dateLabel = nullptr;//L55,新增,用于维护date显示内容

void setupGui()
{
    //L384
    //! Time
    static lv_style_t timeStyle;
    lv_style_copy(&timeStyle, &mainStyle);
    lv_style_set_text_font(&timeStyle, LV_STATE_DEFAULT, &Ubuntu);

    timeLabel = lv_label_create(mainBar, NULL);
    lv_obj_add_style(timeLabel, LV_OBJ_PART_MAIN, &timeStyle);
    //设置字体,Geometr(小字体),Ubuntu(大字体)
    //在库文件中只有两种字体分别在
    // \TTGO_TWatch_Library-master\src\font\Ubuntu.c 
    // \TTGO_TWatch_Library-master\src\font\Geometr.c
    static lv_style_t dateStyle;
    lv_style_copy(&dateStyle, &mainStyle);
    lv_style_set_text_font(&dateStyle, LV_STATE_DEFAULT, &Geometr);
    dateLabel = lv_label_create(mainBar, NULL);
    lv_obj_add_style(dateLabel, LV_OBJ_PART_MAIN, &dateStyle);
    ......
static void updateTime()
{
    time_t now;
    struct tm  info;
    char buf[64];
    time(&now);
    localtime_r(&now, &info);
    strftime(buf, sizeof(buf), "%H:%M", &info);
    lv_label_set_text(timeLabel, buf);
    lv_obj_align(timeLabel, NULL, LV_ALIGN_IN_TOP_MID, 0, 20);
    //更新date的内容以及显示在屏幕上的位置
    memset(buf,0,sizeof(buf));
    strftime(buf, sizeof(buf), "%x", &info);
    lv_label_set_text(dateLabel, buf);
    lv_obj_align(dateLabel, NULL, LV_ALIGN_CENTER, 0, 0);

    TTGOClass *ttgo = TTGOClass::getWatch();
    ttgo->rtc->syncToRtc();
}

4. 重新编译SimpleWatch,并下载即可,如果有问题,可参考上一篇文章

5参考链接

5.1 Strftime

https://www.runoob.com/cprogramming/c-function-strftime.html

C 库函数 size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr) 根据 format 中定义的格式化规则,格式化结构 timeptr 表示的时间,并把它存储在 str 中。

  • str -- 这是指向目标数组的指针,用来复制产生的 C 字符串。
  • maxsize -- 这是被复制到 str 的最大字符数。
  • format -- 这是 C 字符串,包含了普通字符和特殊格式说明符的任何组合。这些格式说明符由函数替换为表示 tm 中所指定时间的相对应值。格式说明符是:

%x

日期表示法

08/19/12

5.2 lv_obj_align

https://docs.lvgl.io/v7/en/html/widgets/obj.html

v_obj_align(obj, obj_ref, LV_ALIGN_..., x_ofs, y_ofs)

 

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TTGO WiFi项目代码是一种用于控制TTGO WiFi模块的代码。TTGO WiFi模块是一款基于ESP32微控制器的Wi-Fi模块,可用于连接互联网和控制其他设备。 在编写TTGO WiFi项目代码时,我们需要先导入适当的库,例如WiFi库和HTTPClient库。然后我们可以设置WiFi模块的连接参数,例如Wi-Fi网络的SSID和密码。接下来,我们可以连接到Wi-Fi网络,并启动HTTP客户端,以便与服务器进行通信。我们可以使用HTTP客户端发送GET或POST请求,以获取或发送数据。 例如,下面是一个简单的代码示例,用于连接到Wi-Fi网络并访问服务器上的数据: #include <WiFi.h> #include <HTTPClient.h> const char* ssid = "YourNetworkName"; const char* password = "YourNetworkPassword"; const char* serverUrl = "http://www.example.com/data"; void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected to WiFi"); HTTPClient http; http.begin(serverUrl); int httpCode = http.GET(); if (httpCode == HTTP_CODE_OK) { String payload = http.getString(); Serial.println(payload); } http.end(); } void loop() { // 你可以在此处添加其他代码逻辑 } 以上代码首先导入WiFi和HTTPClient库,并设置Wi-Fi网络的连接参数。然后它尝试连接到Wi-Fi网络,直到成功连接为止。一旦连接成功,它使用HTTP客户端开始与服务器进行通信。它发送一个GET请求来获取服务器上的数据,并打印出来。最后,HTTP客户端关闭连接。在循环函数中,你可以添加其他逻辑代码。 这只是一个简单的示例,你可以根据你的目标来修改和扩展代码。希望这个回答能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值