华芯微特开发论坛

 找回密码
 立即注册
搜索
热搜: SWM341 资料
查看: 111|回复: 0

【UI Creator应用示例】UI Creator 键盘(keypad)移植指南

[复制链接]

3

主题

7

帖子

126

积分

注册会员

Rank: 2

积分
126
发表于 2024-4-19 18:37:36 | 显示全部楼层 |阅读模式
本帖最后由 wuttttt 于 2024-4-19 18:39 编辑

LVGL提供输入设备的种类一共有5种,分别是:touchpad(触摸板)、mouse(鼠标)、keypad(键盘)、encoder(编码器)、button(外部按键)。而基于UI Creator框架下我们已经提供了touchpad的输入设备移植,但通常在我们的项目中,有多种输入方式,除了比较常见的屏幕触摸之外,还有矩阵按键和旋转编码器等输入方式也较为常见,而键盘的移植和使用跟触摸板有所区别,本篇旨在详细说明如何基于UI Creator框架移植键盘的输入设备。
首先我们找到lv_porting/lv_port_indev.c文件打开,在静态声明中把关于keypad相关的声明复制出来,如下图所示:
1.png

接着在lv_port_indev_init(void) 函数中同样把keypad相关的函数的复制出来,如下图所示:
2.png

      然后在静态函数中同样地把keypad相关函数复制出来,如下图:
       3.png

      然后分别在keypad_init(void) 添加按键驱动的初始化和在keypad_get_key(void) 添加按键扫描代码,这里以每个IO驱动一个按键为例,将GPIO配置为输入、使能上拉,具体代码如下:
       4.png

      然后编写按键扫描代码,与其定义的键值一一匹配
       5.png

      为了方便验证,我们在keypad_read(…)中增加串口打印信息,来判断我们获取的键值是否正确
       6.png

      完成后编译下载,我们看到串口调试助手中,打印信息符合预期,至此我们的键盘移植完毕。
       7.png

      值得注意的是,我们需要使用lv_group_t *group =lv_group_create() 创建组,并且使用lv_group_add_obj(group, obj)在组中增加控件,最后将这个组添加给输入设备lv_indev_set_group(indev_keypad, group).
      可以在界面的xxx_start(…)中创建组并添加控件,并下载烧录,如下所示:
       8.png

      各个按键的IO以及对应的功能如下图所示:
       9.png

      由于上位机框架下默认主题为空主题,因此聚焦时的样式跟非聚焦状态没有区别,因此特地修改了一个模板用于聚焦样式,详见附件中lv_theme_empty.c文件。将此文件与原先工程的lv_theme_empty.c替换,再次编译后下载,我们可以看到聚焦样式。详见视频。
示例视频.mp4 (9.89 MB, 下载次数: 2)

      至此,我们完成了基于UICreator的输入设备之键盘(keypad)的移植,并且已经添加对应的组和控件。


附件: keypad_.indev_240419.zip (6.07 MB, 下载次数: 3)

回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|华芯微特开发论坛

GMT+8, 2024-5-20 14:19 , Processed in 0.033060 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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