其他分享
首页 > 其他分享> > LVGL8编码器移植

LVGL8编码器移植

作者:互联网

编码器

使用编码器,您可以执行以下操作:

简而言之,编码器输入设备的工作方式如下:

indev_drv.type = LV_INDEV_TYPE_ENCODER;
indev_drv.read_cb = encoder_read;

...

void encoder_read(lv_indev_drv_t * drv, lv_indev_data_t*data){
  data->enc_diff = enc_get_new_moves();

  if(enc_pressed()) data->state = LV_INDEV_STATE_PRESSED;
  else data->state = LV_INDEV_STATE_RELEASED;
}

使用带有编码器逻辑的按钮

除了标准编码器行为之外,您还可以利用其逻辑来使用按钮导航(聚焦)和编辑小部件。如果您只有几个按钮可用,或者您想使用除编码轮之外的其他按钮,这将特别方便。

您需要有 3 个按钮可用:

其他键将传递给聚焦的小部件

如果您按住这些键,它将模拟编码器前进,其周期在 中指定

indev_drv.type = LV_INDEV_TYPE_ENCODER;
indev_drv.read_cb = encoder_with_keys_read;

...

void encoder_with_keys_read(lv_indev_drv_t * drv, lv_indev_data_t*data){
  data->key = last_key();            /*Get the last pressed or released key*/
                                     /* use LV_KEY_ENTER for encoder press */
  if(key_pressed()) data->state = LV_INDEV_STATE_PRESSED;
  else {
      data->state = LV_INDEV_STATE_RELEASED;
      /* Optionally you can also use enc_diff, if you have encoder*/
      data->enc_diff = enc_get_new_moves();
  }
}

标签:LVGL8,编码器,indev,LV,按钮,drv,data,移植
来源: https://blog.csdn.net/qq_43940227/article/details/120946527