找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2|回复: 0
打印 上一主题 下一主题
收起左侧

触摸屏

[复制链接]
跳转到指定楼层
楼主
ID:891178 发表于 2026-10-7 11:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
按照智能浴缸的拥有语音控制和蓝牙连接,这两个功能来运用
#include <stdio.h>
#include "lv_conf.h"
#include <sdl/sdl.h>
#include "lvgl/lvgl.h"
#include "lv_drivers/display/fbdev.h"
#include "lv_drivers/indev/evdev.h"
#include <sys/time.h>
#include <unistd.h>
#include <ui.h>

#define DISP_BUF_SIZE 800 * 480 * 4
void lvgl_init_framebuffer_ts();
// void ui_1()
// {

//     // 在屏幕上创建一个窗口
//     lv_obj_t *mainwin = lv_obj_create(lv_scr_act());
//     // 窗口位置, 大小, 背景, 边框(大小, 颜色)
//     lv_obj_set_pos(mainwin, 200, 120);  // 位置
//     lv_obj_set_size(mainwin, 400, 240); // 大小
//     // 样式(背景), 创建一个样式,给样式添加属性,给组件添加样式
//     // 创建一个样式并且初始化
//     lv_style_t style;
//     lv_style_init(&style);
//     // 给样式添加属性
//     lv_color_t color = lv_color_hex(0xff0000);
//     lv_style_set_bg_color(&style, color);

//     // 给组件添加样式
//     lv_obj_add_style(mainwin, &style, 0);
//     lv_obj_t *button = lv_btn_create(mainwin);
//     // 按钮位置, 大小, 背景, 边框(大小, 颜色)
// }

// lv_obj_t *keyboard = NULL;

// void event_handle(lv_event_t *e)
// {
//     static int i = 0;
//     printf("事件:%d\n", i++);
//     // 获取是什么事件(事件类型)
//     lv_event_code_t code = lv_event_get_code(e);
//     lv_obj_t *cobj = lv_event_get_target(e); // 获取焦点的对象(组件)

//     if ((code == LV_EVENT_CLICKED || code == LV_EVENT_FOCUSED) && keyboard != NULL)
//     {
//         // 把键盘与获取焦点的组件绑定
//         printf("1\n");
//         lv_keyboard_set_textarea(keyboard, cobj);
//         printf("2\n");
//     }
// }

// void login_fun(lv_event_t *e)
// {
//     printf("登录\n");
// }

// void ui_2()
// {
//     // 创建一个窗口
//     lv_obj_t *mainwin = lv_obj_create(lv_scr_act());
//     // 位置(相对位置)
//     lv_obj_align(mainwin, LV_ALIGN_CENTER, 0, -120); // lv_obj_center(mainwin)
//     // 设置大小
//     lv_obj_set_size(mainwin, 400, 240);

//     // 创建输入框
//     lv_obj_t *user = lv_textarea_create(mainwin);
//     lv_obj_align(user, LV_ALIGN_CENTER, 0, -60);
//     lv_obj_set_size(user, 300, 40);
//     lv_textarea_set_placeholder_text(user, "username");

//     lv_obj_t *passwd = lv_textarea_create(mainwin);
//     lv_obj_align(passwd, LV_ALIGN_CENTER, 0, 0);
//     lv_obj_set_size(passwd, 300, 40);
//     lv_textarea_set_placeholder_text(passwd, "password");

//     // 按钮
//     lv_obj_t *login = lv_btn_create(mainwin);
//     lv_obj_align(login, LV_ALIGN_CENTER, 0, 60);
//     lv_obj_set_size(login, 300, 40);
//     // 创建一个标签显示按钮文本
//     lv_obj_t *logintext = lv_label_create(login);
//     lv_label_set_text(logintext, "button");
//     // 把标签放在按钮中央
//     lv_obj_center(logintext);

//     // 创建键盘
//     keyboard = lv_keyboard_create(lv_scr_act());

//     // 给输入框添加事件(事件对象,事件函数,事件类型,用户数据)
//     lv_obj_add_event_cb(user, event_handle, LV_EVENT_ALL, NULL);
//     lv_obj_add_event_cb(passwd, event_handle, LV_EVENT_ALL, NULL);

//     // 按钮添加事件
//     lv_obj_add_event_cb(login, login_fun, LV_EVENT_CLICKED, NULL);
// }
void time_handler(lv_timer_t *t)
{
   //printf("hello  timer\n");
}


void login_fun(lv_event_t *e)
{

    printf("sdfsdfsdfsd\n00");
}

int main(void)
{
    // 初始化-显示和触摸屏
    lvgl_init_framebuffer_ts();
    // 在窗口上创建一个按钮
    //ui_2();

    ui_init();
    // lv_obj_t *button = lv_btn_create(lv_scr_act());
    // lv_obj_center(button);

    // lv_obj_add_event_cb(button, login_fun, LV_EVENT_CLICKED, NULL);
    lv_timer_t *timer = lv_timer_create(time_handler, 1000, NULL);
    // 循环
    while (1)
    {
        lv_timer_handler();
        usleep(5000);
    }
}

void lvgl_init_framebuffer_ts()
{
    /*LittlevGL init*/
    lv_init();
    fbdev_init();
    evdev_init();
    // 缓冲区
    static lv_color_t buf[DISP_BUF_SIZE];  // 显示缓冲区
    static lv_color_t buf1[DISP_BUF_SIZE]; // 显示缓冲区
    static lv_disp_draw_buf_t disp_buf;
    lv_disp_draw_buf_init(&disp_buf, buf, buf1, DISP_BUF_SIZE);

    // 设置显示缓冲区属性
    static lv_disp_drv_t disp_drv;
    lv_disp_drv_init(&disp_drv);
    disp_drv.draw_buf = &disp_buf;
    disp_drv.flush_cb =fbdev_flush;

    disp_drv.hor_res = 800;
    disp_drv.ver_res = 480;
    lv_disp_drv_register(&disp_drv);

    // 输入设备初始化
    static lv_indev_drv_t indev_drv_1;
    lv_indev_drv_init(&indev_drv_1);          /*Basic initialization*/
    indev_drv_1.type = LV_INDEV_TYPE_POINTER; // 设置输入事件类型
    // 设置具体采集输入数据接口
    indev_drv_1.read_cb = evdev_read;
    lv_indev_t *mouse_indev = lv_indev_drv_register(&indev_drv_1);
}

uint32_t custom_tick_get(void)
{
    static uint64_t start_ms = 0;
    if (start_ms == 0)
    {
        struct timeval tv_start;
        gettimeofday(&tv_start, NULL);
        start_ms = (tv_start.tv_sec * 1000000 + tv_start.tv_usec) / 1000;
    }
    struct timeval tv_now;
    gettimeofday(&tv_now, NULL);
    uint64_t now_ms;
    now_ms = (tv_now.tv_sec * 1000000 + tv_now.tv_usec) / 1000;

    uint32_t time_ms = now_ms - start_ms;
    return time_ms;
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶顶 踩踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表