成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

鴻蒙實現S1,S2,User三個物理按鍵的獨立事件-下(DTButton-V0.0.3)

系統
文章由鴻蒙社區產出,想要了解更多內容請前往:51CTO和華為官方戰略合作共建的鴻蒙技術社區https://harmonyos.51cto.com/#zz

[[353640]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com/#zz

 在上一篇帖子《實現S1,S2,User三個物理按鍵的獨立事件-上(解決思路分析)》中,通過讀取 HI_ADC_CHANNEL_2 上的 ADC 值成功區分了 S1, S2, User 這 3 個物理按鍵。


上圖中的打印輸出是分別按下 User, S1, S2 的效果,這看起來完全符合了我們區分按鍵的需求,但是。。。

但是什么呢?有什么問題嗎?

我想說的是,但是問題非常明顯:這三個鍵中的任意一個被按下都會多次觸發按鍵事件(上圖的實驗通過打印輸出響應按鍵事件)。因此,僅僅區分 S1, S2, User 還不夠,還不能滿足實際開發的需要。所以,必須進一步的完善,使得每次按下按鍵只觸發一次事件。

看到這里,相信大家想到了之前開源的按鍵通用框架 DTButton !在 V0.0.2 版中已經可以區分并觸發各種 GPIO 按鍵事件,卻唯獨區分不了 S1, S2, User。然而,現在已經有了 S1, S2, User 的區分方案,那么將這個方案集成到 DTButton 框架不就完美了嗎??!!

Ok!說干就干!

接下來要做的工作就是:

  1. 將 GetSSU() 集成到框架,使得框架支持 S1, S2, User 的三種事件(Pressed, LongPressed, Released)
  2. 不改變框架的對外接口(不改變框架調用方式,不增加新接口函數)
  3. 不影響框架 V0.0.2 版本的原有功能

要做好上述 3 個工作,就需要再回顧一下 DTButton 框架的核心設計:

 

 GPIO 按鍵在中斷服務程序中標記事件的發生,之后在事件處理線程中通過標記調用事件回調函數(僅一次)!

注意:觸發事件后需要立即清除事件標記,防止多次調用回調函數。

所以,最簡單的集成方式就是:當 S1, S2, User 中有鍵按下時進行事件標記,之后再通過事件標記調用相應回調函數(返回后清除事件標記)。

流程如下:


接下來要考慮的問題是:如何構造 S1, S2, User 的按下事件和釋放事件?

要解決這個問題,可以參考一般 GPIO 按鍵的事件觸發方式:上升沿觸發和下降沿觸發。然而,相信你也意識到了,S1, S2, User 是通過檢測 ADC 值來判斷區分的,無法像 GPIO 按鍵那樣直接準確的捕獲上升沿和下降沿。怎么辦呢???直接不行,可以間接:通過模擬上升沿和下降沿構造釋放事件和按下事件。

具體方法如下:


在代碼層面可以用變量 preKey 記錄上一次通過 GetSSU() 獲得的按鍵狀態,并與當前調用 GetSSU() 獲得的按鍵狀態進行比較,比較結果即可判斷是否構造按鍵事件。

 有了以上分析就可以動手寫出下面的代碼了!


 之后,整個框架以統一的方式處理按鍵事件,不管是 S1, S2, User 還是 GPIO 按鍵,但凡觸發了事件都會在 EventHandler() 得到處理。


到此,按鍵通用框架 V0.0.3 版的設計就完成了!具體代碼實現已開源(文末附件下載),開箱即用。

使用示例如下:


一樣的接口,一樣的方式,一樣的體驗,多出來的僅是對 S1, S2, User 三個物理按鍵的區分支持。

Enjoy It!

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com/#zz

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2020-11-12 11:23:54

鴻蒙

2020-11-09 11:43:51

長按事件

2017-03-01 10:16:57

科技新聞早報小米芯片

2013-12-13 18:09:12

ThinkPad

2021-08-06 09:47:01

鴻蒙HarmonyOS應用

2011-09-13 15:05:57

2022-04-02 20:11:50

智慧交通燈鴻蒙操作系統

2010-08-04 14:02:08

Flex事件機制

2013-08-01 10:16:06

Linux

2015-09-29 11:18:48

溫州S1線敏捷交換機S12700華為

2023-08-04 16:22:09

大數據

2016-08-17 14:12:43

商務本

2021-03-05 10:02:46

OPPO華為智慧屏

2011-08-25 18:02:37

strcoll中文man

2017-09-01 14:30:32

GeohashGoogle S2索引

2023-01-10 14:29:34

大數據數據倉庫

2018-07-26 11:02:31

筆記本

2012-08-07 14:04:53

投影機

2012-02-21 10:30:35

業務靈活性IT架構

2014-05-22 09:54:22

流量管理Hyper-V網絡性能
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人精品久久二区二区 | 亚洲国产情侣 | 四虎精品在线 | 在线观看中文字幕一区二区 | av日日操| 在线观看一区 | 五月婷婷在线视频 | av国产精品| 在线亚洲一区 | 国产精品美女www | 亚洲97| 欧美高清成人 | 成人片免费看 | 日韩欧美一区二区三区免费观看 | 天堂中文在线观看 | 91精品久久久久久久 | 精品久久久久久久久久久久 | 成人精品区 | 久久久久国产一区二区三区四区 | 青青草华人在线视频 | 久久亚洲二区 | 日韩一区二区在线视频 | 日本成人中文字幕 | 一区二区三区视频在线 | 91视视频在线观看入口直接观看 | 欧美日韩国产三级 | 99亚洲精品视频 | 亚洲精品一区二区 | 欧美啪啪网站 | 成人国产网站 | 亚洲天堂精品一区 | 求毛片| 久久久久国产精品一区二区 | 亚洲av毛片成人精品 | 久久国产精品-国产精品 | 久国产精品 | 日韩精品一区二区三区免费观看 | 久久国产精品一区 | 成人免费视频观看视频 | 日韩图区 | 亚洲 欧美 在线 一区 |