如何将lvgl的虚拟按键与外置独立实体按键联动

如何将lvgl的虚拟按键与外置独⽴实体按键联动如何将lvgl的虚拟按键与外置独⽴实体按键联动(基于lvgl V6.0.2)
lv_port_indev配置
lv_port_indev.c
//定义按键函数
时子环static bool button_read(lv_indev_drv_t * indev_drv, lv_indev_data_t * data);
static int8_t button_get_pressed_id(void);
static bool button_is_pressed(uint8_t id);
lv_indev_t * indev_btn;
//在初始化函数中注册按键,该初始化函数会在main主函数中调⽤
void lv_port_indev_init(void)
{
lv_indev_drv_t indev_drv;
/*Register a button input device*/
lv_indev_drv_init(&indev_drv);
pe = LV_INDEV_TYPE_BUTTON;
ad_cb = button_read;
indev_btn =lv_indev_drv_register(&indev_drv);轨道交通系统
//指定具体坐标点,我使⽤了三个物理按键来跟屏幕的触摸按键对应,该坐标点必须在虚拟按键的触摸范围内。
static lv_point_t points_btn[3]={
{SC_MENU_Addr_X1, SC_MENU_Addr_Y1},
{SC_MENU_Addr_X1+3*SC_Base_Addr_X36, SC_MENU_Addr_Y1},
{SC_MENU_Addr_X1+6*SC_Base_Addr_X36, SC_MENU_Addr_Y1},
};
lv_indev_set_button_points(indev_btn, points_btn);
}
//button_read 使⽤系统默认的即可
static bool button_read(lv_indev_drv_t * indev_drv, lv_indev_data_t * data)
{
static uint8_t last_btn =0;
/*Get the pressed button's ID*/
int8_t btn_act =button_get_pressed_id();
if(btn_act >=0){
data->state = LV_INDEV_STATE_PR;
last_btn = btn_act;
}else{
data->state = LV_INDEV_STATE_REL;
}
/*Save the last pressed button's ID*/
data->btn_id = last_btn;
/*Return `false` because we are not buffering and no more data to read*/双合金螺杆
return false;
}
/*Get ID  (0, 1, 2 ..) of the pressed button*/
//使⽤系统默认的即可
/
一叶荻/注意此处i的最⼤值为数组最⼤有效值
static int8_t button_get_pressed_id(void)
{
uint8_t i;
/*Check to buttons see which is being pressed (assume there are 2 buttons)*/
for(i =0; i <3; i++){
/*Return the pressed button's ID*/
if(button_is_pressed(i)){
return i;
移动管式喷砂机}
}
}
/*No button pressed*/
return-1;
双绞线视频传输器
}
//此处需要将ID号与你实体按键的IO⼝对应起来。例如我的PE2对应ID号为0,对应坐标点为{SC_MENU_Addr_X1, SC_MENU_Addr_Y1}, /*Test if `id` button is pressed or not*/
static bool button_is_pressed(uint8_t id)
{
uint8_t i;
if(id==0)
{
i=key_Scan_lvgl(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_2),1,M_ONOFF_PRES);
if(i>0)
return true;
}else if(id==1)
{
i=key_Scan_lvgl(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_3),1,M_UP_PRES);
if(i>0)
return true;
}
else if(id==2)
{
i=key_Scan_lvgl(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_4),1,M_DOWN_PRES);
if(i>0)
return true;
}
return false;
}
以上是初学时对此的应⽤,如有不⾜,敬请谅解。

本文发布于:2024-09-22 11:26:56,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/283804.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:按键   对应   系统   虚拟   函数   外置   实体   触摸
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议