LVGL提供輸入設備的種類一共有5種,分別是:touchpad(觸摸板)、mouse(鼠標)、keypad(鍵盤)、encoder(編碼器)、button(外部按鍵)。而基于UI Creator框架下我們已經提供了touchpad的輸入設備移植,但通常在我們的項目中,有多種輸入方式,除了比較常見的屏幕觸摸之外,還有矩陣按鍵和旋轉編碼器等輸入方式也較為常見,而鍵盤的移植和使用跟觸摸板有所區別,本篇旨在詳細說明如何基于UI Creator框架移植鍵盤的輸入設備。
RECRUIT
首先我們找到lv_porting/lv_port_indev.c文件打開,在靜態聲明中把關于keypad相關的聲明復制出來,如下圖所示:
接著在lv_port_indev_init(void) 函數中同樣把keypad相關的函數的復制出來,如下圖所示:
然后在靜態函數中同樣地把keypad相關函數復制出來,如下圖:
然后分別在keypad_init(void) 添加按鍵驅動的初始化和在keypad_get_key(void) 添加按鍵掃描代碼,這里以每個IO驅動一個按鍵為例,將GPIO配置為輸入、使能上拉,具體代碼如下:
然后編寫按鍵掃描代碼,與其定義的鍵值一一匹配
為了方便驗證,我們在keypad_read(…)中增加串口打印信息,來判斷我們獲取的鍵值是否正確
完成后編譯下載,我們看到串口調試助手中,打印信息符合預期,至此我們的鍵盤移植完畢。
值得注意的是,我們需要使用lv_group_t *group = lv_group_create() 創建組,并且使用lv_group_add_obj(group, obj)在組中增加控件,最后將這個組添加給輸入設備lv_indev_set_group(indev_keypad, group).
可以在界面的xxx_start(…)中創建組并添加控件,如下所示:
至此,我們完成了基于UI Creator的輸入設備之鍵盤(keypad)的移植,并且已經添加對應的組和控件。