int main(int argc, char *argv[])
{
App_Init();
lcd_lvgl_init_lib();
lcd_open_lib();
memset(&TsPoint, 0, sizeof(TS_POINT_T));
touchpad_init();
indev_touchpad = lv_indev_create();
lv_indev_set_type(indev_touchpad, LV_INDEV_TYPE_POINTER);
lv_indev_set_read_cb(indev_touchpad, touchpad_read);
indev_keypad = lv_indev_create();
lv_indev_set_type(indev_keypad, LV_INDEV_TYPE_KEYPAD);
lv_indev_set_read_cb(indev_keypad, keypad_read);
// group = lv_group_create();
// lv_indev_set_group(indev_keypad, group); //将组绑定到输入设备
//lcd_test();
lv_example_get_started_1();
/*Handle LVGL tasks*/
while(1) {
lv_timer_handler();
lv_tick_inc(5);//防止5毫秒过去 ,LVGL会失去时钟,触摸函数无响应
}
}
参考实现: https://renesas-docs.100ask.net/zh/DShanMCU_RA6M5/lvgl_port_special_tutorial/chapter7.html#_7-2-对接驱动
lv_group_t *g = lv_group_create();
lv_group_set_default(g);
lv_indev_set_group(indev_touchpad, g);
lv_indev_set_group(indev_encoder, g);
好的,我参考上的学习一下。感谢您。还想再请教一个问题。
触摸现在可以获取到屏幕的X和Y值,那这个界面中存在多个组件,想通过触摸控制的话,是不是得使用X和Y的值来控制?还是LVGL有什么更好的办法?
你只需要将获取的坐标值告诉lvgl即可,lvgl会根据坐标数据进行处理。
如果你想实现拖拽效果,在和lvgl库对接好触摸驱动之后,参考这个示例:https://lvgl.100ask.net/8.3/widgets/obj.html#make-an-object-draggable
paopao
7
那还有个问题请教周老师,我这边测试,发现按下去能获取到X和Y,我界面也有一个按钮,但是按钮并没有响应触摸,这个有什么原因? 我尝试把按钮加到group 这个group和触摸绑定,但是都没有效果。
paopao
8
哦哦,解决了,不需要group绑定,的确是lvgl根据坐标数据自动处理的
去冲突可能是这里的结构体变量用了同一个了,我的问题是出在这里