|
按照智能浴缸的拥有语音控制和蓝牙连接,这两个功能来运用 #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;
}
|