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

鴻蒙實(shí)現(xiàn)S1,S2,User三個(gè)物理按鍵的獨(dú)立事件-下(DTButton-V0.0.3)

系統(tǒng)
文章由鴻蒙社區(qū)產(chǎn)出,想要了解更多內(nèi)容請(qǐng)前往:51CTO和華為官方戰(zhàn)略合作共建的鴻蒙技術(shù)社區(qū)https://harmonyos.51cto.com/#zz

[[353640]]

想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

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

 在上一篇帖子《實(shí)現(xiàn)S1,S2,User三個(gè)物理按鍵的獨(dú)立事件-上(解決思路分析)》中,通過(guò)讀取 HI_ADC_CHANNEL_2 上的 ADC 值成功區(qū)分了 S1, S2, User 這 3 個(gè)物理按鍵。


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

但是什么呢?有什么問(wèn)題嗎?

我想說(shuō)的是,但是問(wèn)題非常明顯:這三個(gè)鍵中的任意一個(gè)被按下都會(huì)多次觸發(fā)按鍵事件(上圖的實(shí)驗(yàn)通過(guò)打印輸出響應(yīng)按鍵事件)。因此,僅僅區(qū)分 S1, S2, User 還不夠,還不能滿足實(shí)際開(kāi)發(fā)的需要。所以,必須進(jìn)一步的完善,使得每次按下按鍵只觸發(fā)一次事件。

看到這里,相信大家想到了之前開(kāi)源的按鍵通用框架 DTButton !在 V0.0.2 版中已經(jīng)可以區(qū)分并觸發(fā)各種 GPIO 按鍵事件,卻唯獨(dú)區(qū)分不了 S1, S2, User。然而,現(xiàn)在已經(jīng)有了 S1, S2, User 的區(qū)分方案,那么將這個(gè)方案集成到 DTButton 框架不就完美了嗎??!!

Ok!說(shuō)干就干!

接下來(lái)要做的工作就是:

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

要做好上述 3 個(gè)工作,就需要再回顧一下 DTButton 框架的核心設(shè)計(jì):

 

 GPIO 按鍵在中斷服務(wù)程序中標(biāo)記事件的發(fā)生,之后在事件處理線程中通過(guò)標(biāo)記調(diào)用事件回調(diào)函數(shù)(僅一次)!

注意:觸發(fā)事件后需要立即清除事件標(biāo)記,防止多次調(diào)用回調(diào)函數(shù)。

所以,最簡(jiǎn)單的集成方式就是:當(dāng) S1, S2, User 中有鍵按下時(shí)進(jìn)行事件標(biāo)記,之后再通過(guò)事件標(biāo)記調(diào)用相應(yīng)回調(diào)函數(shù)(返回后清除事件標(biāo)記)。

流程如下:


接下來(lái)要考慮的問(wèn)題是:如何構(gòu)造 S1, S2, User 的按下事件和釋放事件?

要解決這個(gè)問(wèn)題,可以參考一般 GPIO 按鍵的事件觸發(fā)方式:上升沿觸發(fā)和下降沿觸發(fā)。然而,相信你也意識(shí)到了,S1, S2, User 是通過(guò)檢測(cè) ADC 值來(lái)判斷區(qū)分的,無(wú)法像 GPIO 按鍵那樣直接準(zhǔn)確的捕獲上升沿和下降沿。怎么辦呢???直接不行,可以間接:通過(guò)模擬上升沿和下降沿構(gòu)造釋放事件和按下事件。

具體方法如下:


在代碼層面可以用變量 preKey 記錄上一次通過(guò) GetSSU() 獲得的按鍵狀態(tài),并與當(dāng)前調(diào)用 GetSSU() 獲得的按鍵狀態(tài)進(jìn)行比較,比較結(jié)果即可判斷是否構(gòu)造按鍵事件。

 有了以上分析就可以動(dòng)手寫出下面的代碼了!


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


到此,按鍵通用框架 V0.0.3 版的設(shè)計(jì)就完成了!具體代碼實(shí)現(xiàn)已開(kāi)源(文末附件下載),開(kāi)箱即用。

使用示例如下:


一樣的接口,一樣的方式,一樣的體驗(yàn),多出來(lái)的僅是對(duì) S1, S2, User 三個(gè)物理按鍵的區(qū)分支持。

Enjoy It!

想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

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

 

責(zé)任編輯:jianghua 來(lái)源: 鴻蒙社區(qū)
相關(guān)推薦

2020-11-12 11:23:54

鴻蒙

2020-11-09 11:43:51

長(zhǎng)按事件

2017-03-01 10:16:57

科技新聞早報(bào)小米芯片

2021-08-06 09:47:01

鴻蒙HarmonyOS應(yīng)用

2013-12-13 18:09:12

ThinkPad

2011-09-13 15:05:57

2022-04-02 20:11:50

智慧交通燈鴻蒙操作系統(tǒng)

2010-08-04 14:02:08

Flex事件機(jī)制

2013-08-01 10:16:06

Linux

2016-08-17 14:12:43

商務(wù)本

2023-08-04 16:22:09

大數(shù)據(jù)

2021-03-05 10:02:46

OPPO華為智慧屏

2015-09-29 11:18:48

溫州S1線敏捷交換機(jī)S12700華為

2017-09-01 14:30:32

GeohashGoogle S2索引

2011-08-25 18:02:37

strcoll中文man

2023-01-10 14:29:34

大數(shù)據(jù)數(shù)據(jù)倉(cāng)庫(kù)

2020-11-03 12:26:55

Hi3861

2012-02-21 10:30:35

業(yè)務(wù)靈活性IT架構(gòu)

2014-05-21 13:51:37

Hyper-V網(wǎng)絡(luò)性能

2014-05-22 09:54:22

流量管理Hyper-V網(wǎng)絡(luò)性能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: a免费视频| 超碰在线97国产 | 国产成人99久久亚洲综合精品 | 久久久激情 | 一区二区三区四区电影 | 特级黄色毛片 | 免费观看色 | 欧美视频1区 | 欧美一区二区三区高清视频 | 久久一 | 天天操天天舔 | www.中文字幕.com | 三级高清 | 亚洲精品电影 | 黄色毛片免费视频 | 国产操操操 | 亚洲国产精久久久久久久 | 精国产品一区二区三区四季综 | 午夜久久久| 久久精品亚洲国产 | 欧美激情va永久在线播放 | 午夜精品久久久久久不卡欧美一级 | 99免费在线视频 | 日韩一区二区av | 成人av网站在线观看 | 成人av一区 | 亚洲国产欧美一区二区三区久久 | 99成人精品 | 国产精品久久九九 | 国产日屁| 日本亚洲精品成人欧美一区 | 中文字幕一区二区三区在线乱码 | 日韩和的一区二区 | 欧美伊人影院 | 在线成人一区 | 亚洲免费一区二区 | 中文字幕成人av | 免费在线视频一区二区 | 99综合| 天天操天天天干 | 一本一道久久a久久精品综合 |