成人免费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

長按事件

2021-08-06 09:47:01

鴻蒙HarmonyOS應用

2017-03-01 10:16:57

科技新聞早報小米芯片

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

2018-08-15 10:48:45

云計算存儲虛擬化

2012-02-21 10:30:35

業務靈活性IT架構

2015-09-29 11:18:48

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

2017-09-01 14:30:32

GeohashGoogle S2索引

2011-01-19 13:11:25

Zimbra白名單證書

2013-01-06 11:01:59

大數據分析

2016-08-17 14:12:43

商務本

2022-07-15 08:52:10

代碼Java設計模式

2011-08-25 18:02:37

strcoll中文man

2022-10-13 14:15:35

商業智能大數據工具

2023-04-26 11:14:11

IT領導者遠程工作
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 999精品在线 | 91一区二区三区在线观看 | 成人黄色av网址 | 中文字幕一级 | 国产伦精品 | 国产亚洲一区二区三区在线观看 | 亚洲国产欧美在线 | 国产一区二区在线免费 | 一区二区三区欧美 | 亚洲电影中文字幕 | 欧美综合色 | 成人免费看电影 | 狠狠色综合网站久久久久久久 | 黄色国产 | 奇米影视77 | 久久久久久久综合 | 中国美女撒尿txxxxx视频 | 在线视频久久 | 久久久久国产精品一区二区 | 国产精品久久久久久久久久久久 | 久久成人高清视频 | 一区二区三区在线播放 | 手机在线观看av | 国产精品一区一区三区 | 男女羞羞视频在线看 | 手机看黄av免费网址 | 91精品在线观看入口 | 成人精品久久 | 亚洲免费精品 | 精品成人| 秋霞a级毛片在线看 | 夜夜草| 九九久久久久久 | 99久久夜色精品国产亚洲96 | 国产精品一区二区无线 | 最新国产精品 | 免费午夜剧场 | 成人一区二区在线 | 久久欧美精品 | 视频1区2区 | 99热最新|