女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【AWTK使用經(jīng)驗】如何響應(yīng)物理按鍵

ZLG致遠電子 ? 2024-06-06 08:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

AWTK是基于C語言開發(fā)的跨平臺GUI框架?!禔WTK使用經(jīng)驗》系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案,例如:如何加載外部資源?如何設(shè)計自定義進度條?這些都會在系列文章進行解答。

ZTP800示教器 設(shè)備上有許多按鍵,假設(shè)想在自己的AWTK程序中檢測并使用這些按鍵響應(yīng)事件,則需要使用AWTK綁定物理按鍵的功能。

本篇文章將借助一個檢測按鍵的demo程序來介紹如何綁定物理按鍵并響應(yīng),該demo最終效果是按下任意物理按鍵時會顯示該按鍵key down,松開按鍵時會顯示該按鍵key up。

358f0e00-239b-11ef-bd4a-92fbcf53809c.png?

圖1按鍵檢測程序效果圖

設(shè)計界面與綁定按鍵事件

用AWTK Designer打開一個新建工程,并且放置一個靜態(tài)文本控件用作顯示按下或彈起的按鍵值。

35a18d64-239b-11ef-bd4a-92fbcf53809c.png

圖2使用AWTK Designer設(shè)計界面

1. 綁定按鍵按下與彈起事件

接下來修改項目的src/pages/home_page.c代碼文件,在初始化窗體時注冊監(jiān)聽全局按鍵按下與彈起事件:

navigator_global_widget_on(EVT_KEY_DOWN, on_global_key_down, win);navigator_global_widget_on(EVT_KEY_UP, on_global_key_up, win);

接著同樣在home_page.c實現(xiàn)按鍵按下和彈起的回調(diào)函數(shù),獲取按鍵值并輸出按鍵狀態(tài)為按下還是抬起:

static ret_t on_global_key_down(void* ctx, event_t* e) { // 按鍵按下 char ch[50] = {0}; widget_t* win = WIDGET(ctx); key_event_t* evt = key_event_cast(e); widget_t* label = widget_lookup(win, "label", TRUE); const key_type_value_t* ktv = keys_type_find_by_value(evt->key);
if (ktv == NULL || label == NULL || ktv->name == NULL) { return RET_BAD_PARAMS; }
/* ktv->name為custom_keys.json綁定鍵值對應(yīng)的名稱 */ tk_snprintf(ch, sizeof(ch), "%s key down", ktv->name); widget_set_text_utf8(label, ch);
return RET_OK;}
static ret_t on_global_key_up(void* ctx, event_t* e) { // 按鍵抬起 char ch[50] = {0}; widget_t* win = WIDGET(ctx); key_event_t* evt = key_event_cast(e); widget_t* label = widget_lookup(win, "label", TRUE); const key_type_value_t* ktv = keys_type_find_by_value(evt->key);
if (ktv == NULL || label == NULL || ktv->name == NULL) { return RET_BAD_PARAMS; }
/* ktv->name為custom_keys.json綁定鍵值對應(yīng)的名稱 */ tk_snprintf(ch, sizeof(ch), "%s key up", ktv->name); widget_set_text_utf8(label, ch);
return RET_OK;}

2. 設(shè)定自定義按鍵值

在項目的資源目錄“assets/default/data/”(沒有data文件夾可自行創(chuàng)建)新建一個名為“custom_keys.json”的配置文件,該配置文件記錄按鍵名稱與按鍵值對應(yīng)關(guān)系。下面是記錄“啟動”與“F1”兩個按鈕鍵值示例:

{ "START" : { "value" : 290 }, "F1" : { "value" : 279 }}

文件中“290”與“279”兩個值可以從ZTP800示教器的用戶手冊中獲取,之后在示教器上運行程序,按下“啟動”與“F1”兩個按鍵就能像文章開頭效果圖一樣正確識別按鍵值并顯示在靜態(tài)文本控件中。

嵌入式Linux如何開啟綁定物理按鍵功能

若經(jīng)過上面步驟操作之后還沒效果,可能是沒有開啟ENABLE_CUSTOM_KEYS宏。此時可以在AWTK編譯選項中定義ENABLE_CUSTOM_KEYS=1,再進行編譯AWTK與應(yīng)用即可開啟自定義按鍵功能,下圖是在awtk-linux-fb移植層的awtk_config.py開啟ENABLE_CUSTOM_KEYS宏的方法,其它平臺可根據(jù)實際步驟開啟該宏。

35bb7440-239b-11ef-bd4a-92fbcf53809c.png

圖3配置awtk_config.py開啟宏

RTOS如何綁定物理按鍵

如果想在RTOS平臺綁定物理按鍵也是比較簡單的,只需要在主循環(huán)通過按鍵掃描函數(shù)獲取物理按鍵并設(shè)置供AWTK識別的按鍵值,再調(diào)用AWTK函數(shù)main_loop_post_key_event將該按鍵值發(fā)送到GUI界面即可。
下面是一段STM32F103移植層對接物理按鍵的代碼示例,代碼先調(diào)用底層KEY_Scan按鍵掃描函數(shù)獲取實際物理按鍵,接著將按鍵值轉(zhuǎn)換成給AWTK識別的值(如:TK_KEY_UP),最后通過main_loop_post_key_event發(fā)送給上層GUI主循環(huán)事件隊列。

/* awtk-stm32f103ze-raw/awtk-port/main_loop_stm32_raw.c */void dispatch_input_events(void) { int key = KEY_Scan(0);
switch (key) { case KEY_UP: { key = TK_KEY_UP; break; } case KEY_DOWN: { key = TK_KEY_DOWN; break; } default: { key = 0; } }
if (key) { main_loop_post_key_event(main_loop(), TRUE, key); } else { main_loop_post_key_event(main_loop(), FALSE, key); }}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 檢測
    +關(guān)注

    關(guān)注

    5

    文章

    4640

    瀏覽量

    92818
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7632

    瀏覽量

    141638
  • awtk
    +關(guān)注

    關(guān)注

    0

    文章

    50

    瀏覽量

    386
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    AWTK使用經(jīng)驗】如何添加中文輸入法

    AWTK是基于C語言開發(fā)的跨平臺GUI框架?!?b class='flag-5'>AWTK使用經(jīng)驗》系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案,例如:如何加載外部資源?如何設(shè)計自定義進度條?這些都會在系列文章
    的頭像 發(fā)表于 06-20 08:25 ?1569次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗</b>】如何添加中文輸入法

    AWTK使用經(jīng)驗】如何更換AWTK SDK與渲染模式

    AWTK是基于C語言開發(fā)的跨平臺GUI框架?!?b class='flag-5'>AWTK使用經(jīng)驗》系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案,例如:如何播放攝像頭畫面?如何更換
    的頭像 發(fā)表于 08-01 08:25 ?1554次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗</b>】如何更換<b class='flag-5'>AWTK</b> SDK與渲染模式

    什么是AWTK?AWTK有哪些主要特色?

    什么是AWTK?AWTK有哪些主要特色?
    發(fā)表于 06-16 06:43

    AWTK主要特色

    一、前言剛拿到字節(jié)offer,經(jīng)歷了5次面試,其中4輪技術(shù)面,1輪HR面試。在這里分享一下自己的面試經(jīng)驗和學(xué)習(xí)心得。希望能夠幫助更多的小伙伴。我本科畢業(yè)于四川師范學(xué)院計算機系,剛畢業(yè)時也是小白,也是
    發(fā)表于 08-20 07:28

    介紹AWTK

    ZLG 開源 GUI 引擎 AWTK 1.6 發(fā)布一、介紹AWTK全稱 Toolkit AnyWhere,是ZLG開發(fā)的開源 GUI 引擎,旨在為嵌入式系統(tǒng)、WEB、各種小程序、手機和 PC 打造
    發(fā)表于 08-20 08:09

    AWTK的寓意

    一、介紹AWTK全稱Toolkit AnyWhere,是ZLG開發(fā)的開源GUI引擎,旨在為嵌入式系統(tǒng)、WEB、各種小程序、手機和PC打造的通用GUI引擎,為用戶提供一個功能強大、高效可靠、簡單易用
    發(fā)表于 08-20 08:12

    介紹AWTK

    ZLG開源GUI引擎AWTK發(fā)布1.1版本一、介紹AWTK全稱Toolkit AnyWhere,是ZLG開發(fā)的開源GUI引擎,旨在為嵌入式系統(tǒng)、WEB、各種小程序、手機和PC打造的通用GUI引擎,為
    發(fā)表于 08-20 08:18

    AWTK-MVVM是什么?其功能有哪些

    AWTK-MVVM是一套為AWTK用C語言開發(fā),并支持各種腳本語言的MVVM框架,實現(xiàn)了數(shù)據(jù)綁定、命令綁定和窗口導(dǎo)航等基本功能,使用AWTK-MVVM開發(fā)應(yīng)用程序,無需學(xué)習(xí)AWTK本身
    發(fā)表于 12-15 06:07

    AWTK使用經(jīng)驗】如何設(shè)計立體電池進度條?

    AWTK是基于C語言開發(fā)的跨平臺GUI框架?!?b class='flag-5'>AWTK使用經(jīng)驗》系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案,例如:如何加載外部資源?如何設(shè)計自定義進度條?這些都會在系列文章
    的頭像 發(fā)表于 04-18 08:25 ?768次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗</b>】如何設(shè)計立體電池進度條?

    AWTK使用經(jīng)驗】加載和釋放外部圖片

    AWTK是基于C語言開發(fā)的跨平臺GUI框架?!?b class='flag-5'>AWTK使用經(jīng)驗》系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案,例如:如何加載外部資源?如何設(shè)計自定義進度條?這些都會在系列文章
    的頭像 發(fā)表于 04-26 08:25 ?864次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗</b>】加載和釋放外部圖片

    AWTK使用經(jīng)驗】如何播放視頻或攝像頭畫面

    AWTK是基于C語言開發(fā)的跨平臺GUI框架?!?b class='flag-5'>AWTK使用經(jīng)驗》系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案,例如:如何加載外部資源?如何設(shè)計自定義進度條?這些都會在系列文章
    的頭像 發(fā)表于 07-04 08:25 ?1487次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗</b>】如何播放視頻或攝像頭畫面

    AWTK使用經(jīng)驗】如何實現(xiàn)序列幀動畫

    AWTK是基于C語言開發(fā)的跨平臺GUI框架?!?b class='flag-5'>AWTK使用經(jīng)驗》系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案,例如:如何加載外部資源?如何設(shè)計自定義進度條?這些都會在系列文章
    的頭像 發(fā)表于 07-18 08:25 ?847次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗</b>】如何實現(xiàn)序列幀動畫

    AWTK使用經(jīng)驗】如何在AWTK顯示阿拉伯文本

    AWTK是基于C語言開發(fā)的跨平臺GUI框架。AWTK使用經(jīng)驗系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案,例如:如何播放視頻或攝像頭畫面?如何播放序列幀動畫?這些都會在系列文
    的頭像 發(fā)表于 09-12 08:07 ?689次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗</b>】如何在<b class='flag-5'>AWTK</b>顯示阿拉伯文本

    AWTK使用經(jīng)驗】如何裁剪字庫以及如何使用點陣字

    AWTK是基于C語言開發(fā)的跨平臺GUI框架。AWTK使用經(jīng)驗系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案。AWTK如何裁剪字庫在
    的頭像 發(fā)表于 10-10 08:05 ?550次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗</b>】如何裁剪字庫以及如何使用點陣字

    AWTK使用經(jīng)驗】如何使用系統(tǒng)輸入法與開啟最大化窗口功能

    導(dǎo)讀AWTK是基于C語言開發(fā)的跨平臺GUI框架。AWTK使用經(jīng)驗系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案。AWTK具有跨平臺的
    的頭像 發(fā)表于 11-14 01:05 ?660次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗</b>】如何使用系統(tǒng)輸入法與開啟最大化窗口功能