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

鴻蒙實現S1,S2,User三個物理按鍵的獨立事件-上(解決思路分析)

系統
這個版本的實現完全封裝了Hi3861的原生SDK,實現了開箱即用,所見即所得。然而,相信大家也發現了一個有趣的現象:S1, S2 和 User 三個物理按鍵同時對應了 GPIO_5 端口。

[[351840]]

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

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

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

上 一篇帖子《實現物理按鍵的“長按事件”(按鍵通用框架 V0.0.2)》中開源了 DTButton – V0.0.2 的完整代碼,這個版本的實現完全封裝了Hi3861的原生SDK,實現了開箱即用,所見即所得。然而,相信大家也發現了一個有趣的現象:S1, S2 和 User 三個物理按鍵同時對應了 GPIO_5 端口。


程序中將 GPIO_5 作為按鍵端口連接使用后,無論按下 S1,S2,User 中的哪一個都會觸發事件,就好像“同一個 GPIO 按鍵有了3個不同分身”。為什么會這樣呢?因為在硬件連接上,這三個物理按鍵確實共用了 GPIO_5 ,所以才有了這個問題。

那么,怎么解決這個問題呢?

就目前來看,想要區分 S1,S2 和 User 只能從電氣特性來入手了,根據上圖中黃色下劃線處的提示翻看原理圖《HiSpark_WiFi_IoT_OLED_VER.A》,可以發現 S1 和 S2 的連接如下:

 

明顯可知:S1 和 S2 按下之后紅框位置 switch 處的電壓肯定會發生變化,并且 S1 按下后的電壓與 S2 按下后的電壓不同。

所以,可以考慮通過檢測電壓的方式來判斷究竟哪個鍵被按下了!!!

看起來是不是有點瘋狂!然而,確實可以這么解決問題。

通過實驗發現這 3 個物理按鍵按下后的電壓范圍大致如下:


并且,通過查閱文檔《Hi3861V100/Hi3861LV100 設備驅動 開發指南》中的第 5 章可以找到讀取 ADC 值的 API 接口,以及 ADC 值到電壓值的轉換公式: 

 

問題:ADC 是什么?

ADC 指的是 Analog-to-Digital Convertor,即:模/數轉換器。

在這個問題中,3 個物理按鍵的電壓模擬值會被 ADC 轉換為數字值(ADC值),并且電壓值和 ADC 值是單純的線性轉換關系,所以,通過檢測 ADC 值的變化就可以判斷被按下的物理按鍵。

將表一中的電壓范圍通過公式轉換為 ADC 范圍:

有了這張表之后,離解決問題就更近了一步,接下來看看相關 API 接口的示例:調用 hi_adc_read() 讀取通道7的 ADC 值。


函數 hi_adc_read() 第一個參數用于指定需要讀取的 ADC 通道,第二個參數用于保存讀取的 ADC 值。

對于我們這個問題來說,最關鍵的就是要知道 GPIO_5 對應的 ADC 通道是哪一個。這時可以查閱文檔《Hi3861V100/Hi3861LV100/Hi3881V100 WiFi芯片 用戶指南》,在第 6 章中可以找到下面的表格: 

 

表6-2中紅框部分的對應關系指出:由于 Hi3861 數字管腳有限,故 GPIO_5 與 ADC_2 復用同一管腳。

So! 在代碼層面,可以通過 hi_adc_read() 讀取 HI_ADC_CHANNEL_2 處的 ADC 值,進而判斷 S1,S2,User 中被按下的按鍵。

OK!所有障礙已被掃清,這時可以用代碼描述了:

 很顯然,每次調用 GetSSU() 即可知道是否有鍵被按下,以及具體哪個鍵被按下。

 

看到此處,問題已徹底解決!!

PS:所查閱的文檔以及最終示例代碼均可在附件中下載。

Enjoy it!

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

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

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

 

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

2020-11-23 12:49:06

DTButton-V0

2020-11-09 11:43:51

長按事件

2017-03-01 10:16:57

科技新聞早報小米芯片

2021-08-06 09:47:01

鴻蒙HarmonyOS應用

2011-09-13 15:05:57

2013-12-13 18:09:12

ThinkPad

2010-08-04 14:02:08

Flex事件機制

2013-08-01 10:16:06

Linux

2010-04-09 16:48:51

2015-09-29 11:18:48

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

2017-09-01 14:30:32

GeohashGoogle S2索引

2016-08-17 14:12:43

商務本

2018-08-15 10:48:45

云計算存儲虛擬化

2012-02-21 10:30:35

業務靈活性IT架構

2013-01-06 11:01:59

大數據分析

2011-01-19 13:11:25

Zimbra白名單證書

2011-08-25 18:02:37

strcoll中文man

2022-07-15 08:52:10

代碼Java設計模式

2018-07-26 11:02:31

筆記本

2012-08-07 14:04:53

投影機
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线免费亚洲视频 | 毛片免费观看 | 一区二区在线免费观看 | 国产99久久久国产精品下药 | 91 在线| 国产激情在线观看视频 | 精品免费看 | 日本在线一二 | 情侣黄网站免费看 | 精品久久久久一区二区国产 | 国产精品综合视频 | av一级| 在线观看h视频 | 欧美成视频 | 99re视频这里只有精品 | 日韩欧美亚洲 | 成年人国产在线观看 | 亚洲欧美精品在线观看 | 久久精品一区二 | 国产高清视频 | 日本aa毛片a级毛片免费观看 | 久99久视频 | 久久精品—区二区三区 | 国产精品18久久久 | 日韩欧美精品在线 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 日韩在线视频观看 | 日韩激情视频一区 | 妞干网福利视频 | 在线观看亚洲 | 成人区精品 | 日韩国产精品一区二区三区 | 精品av| 成人精品一区二区三区中文字幕 | 久久久噜噜噜www成人网 | 亚洲国产精品久久人人爱 | 国产精品国产精品 | av一区二区三区四区 | 91在线视频国产 | 伊人伊成久久人综合网站 | 日韩精品一区二区三区 |