亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        HAODE基于Android平臺的鍵盤輸入技術(shù)研究

        2013-01-26 04:24:50天地常州自動化股份有限公司
        電子世界 2013年5期
        關(guān)鍵詞:鍵值觸摸屏按鍵

        天地(常州)自動化股份有限公司 蔣 華

        1.引言

        近年來,伴隨著云計算的飛速發(fā)展,物聯(lián)網(wǎng)技術(shù)的革新,智能終端以一種前所未有的速度在鋪開;在軟件層面,Android、iOS、Win8等智能終端操作系統(tǒng)三分天下,代表了智能終端操作系統(tǒng)的發(fā)展趨勢;而在硬件層面,以ARM架構(gòu)為代表的高速、多核CPU,在智能終端平臺占據(jù)了統(tǒng)治地位。

        雖然煤礦生產(chǎn)作為一個特殊領(lǐng)域,有其安全性、防爆、防潮等特殊的工藝要求,但并不妨礙在煤礦生產(chǎn)領(lǐng)域引進(jìn)智能終端平臺,不但可以跟隨技術(shù)趨勢,實(shí)現(xiàn)礦業(yè)生產(chǎn)的技術(shù)升級;而且可以用更先進(jìn)的平臺、技術(shù)來為礦業(yè)生產(chǎn)服務(wù)。

        然而,在煤礦生產(chǎn)領(lǐng)域引進(jìn)先進(jìn)的智能終端平臺,有一個明顯的缺陷性,即智能終端的代表性技術(shù)——觸摸屏技術(shù)在礦業(yè)作業(yè)區(qū)域的使用,尚無法達(dá)標(biāo)。礦場作業(yè)區(qū)域的濕度、粉塵等外界環(huán)境制約了觸摸屏在礦場環(huán)境的長時間使用。因此,在引進(jìn)智能終端技術(shù)的同時,我們需要作出適當(dāng)?shù)娜∩幔诜艞壥褂糜|摸屏技術(shù)的前提下,采用隔爆、防塵、防水的屏幕,同時結(jié)合傳統(tǒng)的鍵盤輸入技術(shù),以滿足礦場的環(huán)境技術(shù)需求,使得智能終端平臺在礦場環(huán)境中得到新的發(fā)展。

        2.Android輸入系統(tǒng)解析

        Android中,主要的輸入硬件設(shè)備是鍵盤、觸摸屏、軌跡球等。輸入系統(tǒng)的結(jié)構(gòu)也比較簡單,自下而上包含了驅(qū)動程序、本地庫處理部分、硬件抽象層、Java框架層、Android應(yīng)用程序?qū)?。Android用戶輸入系統(tǒng)的結(jié)構(gòu)如圖1所示,此處不做詳細(xì)介紹,將在下文作具體講解。

        3.Linux內(nèi)核驅(qū)動層分析

        在工作生活中,接觸最多的就是全鍵盤,通過USB接口就能連接上主機(jī)進(jìn)行使用;我們的平臺初期也實(shí)現(xiàn)了USB全鍵盤和USB鼠標(biāo)的驅(qū)動,在沒有觸摸屏的情況下,它們是輸入系統(tǒng)的重要實(shí)現(xiàn)方式,但是,全鍵盤的體型、安全性限制,無法在井下環(huán)境中使用。

        此處,我們所要介紹的鍵盤是兩種非常規(guī)的鍵盤:矩陣鍵盤和按鍵鍵盤。兩者各有優(yōu)缺點(diǎn),矩陣鍵盤具有使用CPIO接口少,實(shí)現(xiàn)按鍵多的優(yōu)點(diǎn),缺點(diǎn)卻是驅(qū)動實(shí)現(xiàn)方式較復(fù)雜,并且需要CPU不停地掃描鍵值,消耗有限的CPU資源;按鍵鍵盤占有GPIO接口較多,一個接口一個按鍵,對物理資源GPIO口消耗較多,優(yōu)點(diǎn)在于驅(qū)動實(shí)現(xiàn)簡單,且增加按鍵方便。

        在Android平臺上,我們所要引進(jìn)的鍵盤是要能夠在Android應(yīng)用中替代button控件,實(shí)現(xiàn)按鍵控制;并且要通過有限的按鍵數(shù)目實(shí)現(xiàn)數(shù)字、字母、中文的輸入,符合這些要求的,只有傳統(tǒng)鍵盤符合,只是它的接口方式可以有矩陣和按鍵兩種,此處主要以按鍵鍵盤為例來介紹。

        Linux從2.6版本開始引入了platform這個概念,將設(shè)備驅(qū)動的開發(fā)工作主要分為兩塊:platform_device和platform_driver。前者主要完成板級的硬件設(shè)備資源的添加;后者負(fù)責(zé)實(shí)現(xiàn)具體的設(shè)備驅(qū)動程序。

        在開發(fā)底層驅(qū)動程序時,首先要確認(rèn)的就是設(shè)備的資源信息,在2.6內(nèi)核中將每個設(shè)備的資源用結(jié)構(gòu)platform_device來描述。該結(jié)構(gòu)體定義在/include/linux/platform_device.h中。具體實(shí)現(xiàn)如下步驟:

        1)定義按鍵屬性,如下文本框中GPIO_BUTTON的宏定義,此處重點(diǎn)關(guān)注兩個參數(shù):gpio_num和evc_code。前者需要根據(jù)芯片手冊選擇所需要與按鍵相連的GPIO接口的序號,后者代表了按鍵在Linux內(nèi)核系統(tǒng)中的鍵值,詳見include/linux.h.

        2)將所需使用的按鍵構(gòu)成一個GPIO鍵盤結(jié)構(gòu)體數(shù)組smd_buttons,并以數(shù)組名稱和數(shù)組大小添加到GPIO按鍵驅(qū)動平臺gpio_keys_platform_data中。

        3)將GPIO按鍵添加至設(shè)備平臺驅(qū)動類型platform_device中,并實(shí)現(xiàn)設(shè)備平臺驅(qū)動類型的注冊platform_device_register(&smd_button_device);

        4)在完成platform_device的注冊之后,就需要在內(nèi)核驅(qū)動層進(jìn)行具體設(shè)備的驅(qū)動移植開發(fā),驅(qū)動程序需要實(shí)現(xiàn)結(jié)構(gòu)體platform_driver,也定義在/include/linux/platform_device.h中。鍵盤驅(qū)動的實(shí)現(xiàn)可見driver/input/gpio_keys.c文件。根據(jù)platform_driver提供的接口函數(shù),完成具體的probe、remove等函數(shù)的實(shí)現(xiàn),即可完成按鍵鍵盤驅(qū)動的實(shí)現(xiàn)。

        至此,即完成了按鍵鍵盤的驅(qū)動移植工作。在完成按鍵鍵盤驅(qū)動的移植之后,為了避免再次移植矩陣鍵盤驅(qū)動的麻煩,我們可以使用一個單片機(jī)完成矩陣鍵盤接口電平到按鍵電平的轉(zhuǎn)換,通過硬件的轉(zhuǎn)接,即能在按鍵鍵盤驅(qū)動的基礎(chǔ)上實(shí)現(xiàn)對矩陣鍵盤的驅(qū)動。具體的實(shí)現(xiàn)電路就不再列舉。

        4.本地庫處理系統(tǒng)

        本地庫處理系統(tǒng)主要負(fù)責(zé)對Linux內(nèi)核層上報的按鍵鍵值進(jìn)行二次轉(zhuǎn)換,并進(jìn)行封裝上報至Java框架層。簡而言之,android按鍵消息通過二次轉(zhuǎn)換:

        1)將驅(qū)動report上來的SCANCODE,通過文件qwerty.kl的映射,得到KEYCODE字串;

        2)通過二維表static const KeycodeLabel KEYCODES[],將上面的字符串轉(zhuǎn)換成android需要的鍵值信息。如果是輸入鍵,還需要查詢keymap,得到相應(yīng)的字符。

        圖1 Android輸入系統(tǒng)框圖

        5.Java框架層

        如圖2所示,由KeyInputDevice等類來處理EventHub傳遞上來的信息,通過RawInputEvent和KeyEvent來表示。按鍵事件,以KeyEvent的形式傳送給應(yīng)用程序;而觸摸屏和軌跡球事件以RawInputEvent的形式轉(zhuǎn)換形成MotionEvent事件傳送給Android應(yīng)用程序。

        在這個層面,Google已經(jīng)完成了相應(yīng)機(jī)制的開發(fā)工作,不需要我們進(jìn)行額外的開發(fā),我們只需要了解按鍵事件在這一層的處理即可。

        6.Android應(yīng)用層

        在Android應(yīng)用層中,對于按鍵事件的控制可以通過重寫onKeyDown、onKeyUp函數(shù)來實(shí)現(xiàn)類似Button控件的Listener的監(jiān)測功能;當(dāng)按鍵按下或者回復(fù)時,會觸發(fā)相應(yīng)鍵值多對應(yīng)的Android應(yīng)用層的操作。

        最簡單的例子就是,Android手機(jī)通常都有的Home鍵,即是典型的按鍵功能的實(shí)現(xiàn),當(dāng)然,我們也能夠通過重寫Home鍵的功能,使之實(shí)現(xiàn)不同的效果。如下框圖中的代碼所示,通過判斷鍵值是否為1、2、3,我們來使文本輸出不同的打印信息。在此處,賦予鍵值1、2、3的按鍵,它的功能類似于觸摸屏中的Button控件。

        @Override

        public boolean onKeyDown(int keyCode,KeyEvent event)

        {

        if (keyCode==KeyEvent.KEYCODE_1)

        {

        mTextView1.setText(“事件1”);

        }

        else if(keyCode==KeyEvent.KEYCODE_2)

        {

        mTextView1.setText(“事件2”);

        }

        else if(keyCode==KeyEvent.KEYCODE_3)

        {

        mTextView1.setText(“事件3”);

        }

        }

        7.與Android Button事件比較

        在android應(yīng)用中,組件button的作用與實(shí)體按鍵作用類似,但也有較大差別;兩者之間的差別有二:

        1)對于組件button的響應(yīng)有對應(yīng)的Listener,會監(jiān)測組件button事件;對于實(shí)體按鍵,是通過按鍵鍵值的轉(zhuǎn)換響應(yīng)來判斷的,主要通過對按鍵重寫onKeyDown、onKeyUp來實(shí)現(xiàn)對按鍵事件的響應(yīng);

        2)組件button的按下只會有一次響應(yīng);而對于實(shí)體按鍵的按下,android系統(tǒng)會定時查詢按鍵狀態(tài),可能在用戶看來只按下一次按鍵,但反映到android系統(tǒng)層面卻有若干次響應(yīng)。

        8.結(jié)語

        本文就礦業(yè)領(lǐng)域引進(jìn)智能終端技術(shù)遇到的觸摸屏技術(shù)瓶頸,提出了結(jié)合傳統(tǒng)鍵盤輸入技術(shù),實(shí)現(xiàn)在礦業(yè)生產(chǎn)領(lǐng)域的智能終端的輸入系統(tǒng)的實(shí)現(xiàn)。在智能終端的基礎(chǔ)上,我們可以實(shí)現(xiàn)語音通話、視頻監(jiān)控、安全宣傳等各項(xiàng)功能,并能逐步引入地面成功使用的各種技術(shù),為井下作業(yè)提供幫助。

        [1]韓超,梁泉.Android系統(tǒng)原理及開發(fā)要點(diǎn)詳解[M].北京:電子工業(yè)出版社,2010.

        [2]田澤.嵌入式系統(tǒng)開發(fā)與應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2005.

        [3]高春生,紀(jì)永剛,王維,宋銳.Amigobot移動機(jī)器人上位控制[J]工礦自動化,2012(4):104-108.

        [4]Chunduru V,Subramanian N.Effects of Power Lines on Performance of home control system.International Conference on Power Electronics,Drives and Energy Systems,New Delhi,India,2006:1-6.

        猜你喜歡
        鍵值觸摸屏按鍵
        基于有限狀態(tài)機(jī)的按鍵檢測程序設(shè)計
        電子制作(2021年3期)2021-06-16 03:14:26
        非請勿進(jìn) 為注冊表的重要鍵值上把“鎖”
        PLC和觸摸屏在衛(wèi)生間控制系統(tǒng)的應(yīng)用
        皮膚“長”出觸摸屏
        一鍵直達(dá) Windows 10注冊表編輯高招
        電腦愛好者(2017年9期)2017-06-01 21:38:08
        一種多方向?qū)Ч獍存I結(jié)構(gòu)設(shè)計
        電子制作(2016年1期)2016-11-07 08:43:05
        投射式多點(diǎn)觸控電容觸摸屏
        河南科技(2014年12期)2014-02-27 14:10:32
        觸摸屏項(xiàng)目移植在自動化系統(tǒng)升級中的應(yīng)用
        按鍵的多種狀態(tài)檢測及消抖處理方法
        家電科技(2013年4期)2013-07-09 10:55:08
        解析某型號手機(jī)按鍵檢測程序的缺陷
        亚洲精品综合色区二区| 野外少妇愉情中文字幕| 欧美成人精品第一区二区三区| 国产乱子伦视频一区二区三区| 日本免费精品一区二区三区视频| 插鸡网站在线播放免费观看| 亚洲精品久久久久久久久av无码| 亚洲国产精品自产拍久久蜜AV| 激情视频在线播放一区二区三区| 免费的日本一区二区三区视频| 性激烈的欧美三级视频| JIZZJIZZ国产| 精品久久人妻一区二区| 天天躁夜夜躁狠狠是什么心态| 日韩成人极品在线内射3p蜜臀| 日本少妇被爽到高潮的免费| 东京热加勒比国产精品| 老色鬼在线精品视频| av无码久久久久久不卡网站| 国产精品一区二区午夜久久| 精品一区二区三区婷婷| 东京热人妻无码一区二区av | 欧美人与动人物牲交免费观看| 喷潮出白浆视频在线观看| 极品粉嫩小仙女高潮喷水操av| 黑人巨大精品欧美一区二区| 乱子伦av无码中文字幕| 中文字幕有码手机视频| 国产成人小视频| 久久精品岛国av一区二区无码| 一亚洲一区二区中文字幕| 青青草 视频在线观看| 亚洲男人第一无码av网站| 在线亚洲AV成人无码一区小说| 成人男性视频在线观看| 宅男666在线永久免费观看| 国产精品无码一区二区在线国| 日本伦理美乳中文字幕| 国产精品天干天干| 国产精品成人av在线观看| 国产精品视频免费一区二区三区|