999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

有窮自動(dòng)機(jī)的Linux多點(diǎn)觸摸屏中間件設(shè)計(jì)

2016-03-20 09:14:41趙建峰陳朔鷹羅一涵
關(guān)鍵詞:信息設(shè)計(jì)

趙建峰,陳朔鷹,羅一涵

(北京理工大學(xué)計(jì)算機(jī)學(xué)院,北京100081)

有窮自動(dòng)機(jī)的Linux多點(diǎn)觸摸屏中間件設(shè)計(jì)

趙建峰,陳朔鷹,羅一涵

(北京理工大學(xué)計(jì)算機(jī)學(xué)院,北京100081)

多點(diǎn)觸摸屏的應(yīng)用程序開發(fā)是當(dāng)前的研究熱點(diǎn)。Linux multi-touch(MT)協(xié)議是Linux輸入子系統(tǒng)的一個(gè)標(biāo)準(zhǔn)協(xié)議,定義了多點(diǎn)觸摸設(shè)備驅(qū)動(dòng)程序的數(shù)據(jù)傳輸規(guī)范,有著廣泛的使用范圍。識(shí)別和處理多點(diǎn)觸摸屏驅(qū)動(dòng)程序的數(shù)據(jù)是多點(diǎn)觸摸屏應(yīng)用最基本的功能。本文采用有窮自動(dòng)機(jī)的思想,設(shè)計(jì)了一個(gè)可以識(shí)別符合Linux multi-touch協(xié)議規(guī)范數(shù)據(jù)的多點(diǎn)觸摸屏中間件。中間件提供外部接口供應(yīng)用程序使用,可以減少程序開發(fā)人員的重復(fù)工作,提高開發(fā)效率。

多點(diǎn)觸摸;中間件;有窮自動(dòng)機(jī);嵌入式系統(tǒng)

引 言

嵌入式系統(tǒng)軟硬件的多樣性,造成硬件設(shè)備驅(qū)動(dòng)程序和用戶應(yīng)用程序之間接口的連接問題;應(yīng)用軟件必須進(jìn)行相應(yīng)的移植工作才可以在不同的硬件系統(tǒng)中運(yùn)行,同時(shí)不同軟件在同一個(gè)硬件平臺(tái)編寫時(shí),也可能出現(xiàn)重復(fù)開發(fā)的現(xiàn)象。針對(duì)上述兩種現(xiàn)象,可以使用中間件技術(shù)來解決。中間件對(duì)下層系統(tǒng)的復(fù)雜性進(jìn)行屏蔽并對(duì)上層提供統(tǒng)一的接口,直接供開發(fā)人員使用,從而大大減少了技術(shù)上的負(fù)擔(dān)。

本文將設(shè)計(jì)一個(gè)可識(shí)別多點(diǎn)觸摸屏觸摸點(diǎn)的中間件,接口將提供觸摸點(diǎn)信息。中間件用于多點(diǎn)觸摸屏驅(qū)動(dòng)程序和應(yīng)用程序之間,中間件從驅(qū)動(dòng)程序中獲取原始數(shù)據(jù),應(yīng)用程序使用中間件處理得到觸摸點(diǎn)信息。本文設(shè)計(jì)的中間件遵循Linux multi-touch(MT)協(xié)議。

1 Linux multi-touch協(xié)議

Linux的multi-touch協(xié)議是Linux輸入子系統(tǒng)的一個(gè)標(biāo)準(zhǔn)協(xié)議[1]。此協(xié)議允許內(nèi)核的驅(qū)動(dòng)程序向使用者上報(bào)任意多個(gè)觸摸點(diǎn)的信息。multi-touch協(xié)議分為兩種類型,以便不同類型的硬件設(shè)備使用。A類型協(xié)議用于不具備觸摸點(diǎn)區(qū)分和跟蹤能力的硬件設(shè)備,B類型協(xié)議用于具備觸摸點(diǎn)區(qū)分和跟蹤能力的硬件設(shè)備。B類型協(xié)議對(duì)每個(gè)觸摸點(diǎn)進(jìn)行編號(hào),每個(gè)編號(hào)與一個(gè)槽相對(duì)應(yīng),并使用槽來區(qū)分不同的觸摸點(diǎn)。當(dāng)一個(gè)觸摸點(diǎn)離開時(shí),對(duì)應(yīng)的槽被釋放,被釋放的槽可以被新的觸摸點(diǎn)重復(fù)使用。

使用A類型協(xié)議的硬件設(shè)備因?yàn)椴荒軈^(qū)分和跟蹤觸摸點(diǎn),其驅(qū)動(dòng)程序必須定時(shí)上報(bào)當(dāng)前所有的觸摸點(diǎn)信息,而使用B類型協(xié)議的硬件設(shè)備的驅(qū)動(dòng)程序只在觸摸點(diǎn)狀態(tài)發(fā)生改變(增加、移除、移動(dòng))時(shí),才會(huì)上報(bào)信息,而且只上報(bào)狀態(tài)發(fā)生改變的觸摸點(diǎn)信息。驅(qū)動(dòng)程序使用一串ABS_MT消息上報(bào)觸摸點(diǎn)的信息,每一個(gè)ABS_MT消息是一個(gè)結(jié)構(gòu)體,包含類型、數(shù)值、時(shí)間戳等成員。

協(xié)議舉例:A類型

有兩個(gè)觸摸點(diǎn)時(shí),上報(bào)的最小消息時(shí)序:

移除第一個(gè)觸摸點(diǎn)時(shí),上報(bào)的消息時(shí)序:

移除第二個(gè)觸摸點(diǎn)時(shí),上報(bào)的消息時(shí)序:

協(xié)議舉例:B類型

有兩個(gè)觸摸點(diǎn)時(shí),上報(bào)的最小消息時(shí)序:

當(dāng)ID為0的觸摸點(diǎn)向X軸方向移動(dòng)后產(chǎn)生的消息時(shí)序:

移除第一個(gè)觸摸點(diǎn)(slot 0,ID 0)時(shí),上報(bào)的消息時(shí)序:

移除第二個(gè)觸摸點(diǎn)(slot 1,ID 1)時(shí),上報(bào)的消息時(shí)序:

A類型協(xié)議的優(yōu)點(diǎn)是在驅(qū)動(dòng)程序上報(bào)消息串的類型比較單一,用戶容易識(shí)別和獲取當(dāng)前觸摸點(diǎn)的位置信息;缺點(diǎn)是用戶在使用時(shí),必須自行計(jì)算觸摸點(diǎn)的狀態(tài)信息(如觸摸點(diǎn)增加、觸摸點(diǎn)移動(dòng)等情況),需要定時(shí)處理并且數(shù)據(jù)量較大。

B類型協(xié)議的優(yōu)點(diǎn)是用戶可以直接獲取觸摸點(diǎn)的狀態(tài)信息,并且只在觸摸點(diǎn)狀態(tài)發(fā)生變化時(shí)才需處理,需要處理的數(shù)據(jù)只是狀態(tài)發(fā)生變化的觸摸點(diǎn)信息;缺點(diǎn)是驅(qū)動(dòng)程序上報(bào)的消息串類型較多,相比A類型協(xié)議較難識(shí)別。

2 基于有窮自動(dòng)機(jī)的多點(diǎn)觸摸屏中間件設(shè)計(jì)

2.1 有窮自動(dòng)機(jī)

有窮自動(dòng)機(jī)(也稱有限自動(dòng)機(jī))是一種識(shí)別模型,它能準(zhǔn)確地識(shí)別正規(guī)集。有窮自動(dòng)機(jī)分為兩類:確定有窮自動(dòng)機(jī)和非確定有窮自動(dòng)機(jī),本文在設(shè)計(jì)中間件時(shí)使用了確定有窮自動(dòng)機(jī)模型。一個(gè)確定的有窮自動(dòng)機(jī)(DFA)M是一個(gè)五元組:M=(K,Σ,f,S,Z),其中K為狀態(tài)集,Σ為輸入符號(hào)表,f為轉(zhuǎn)換函數(shù),S為初態(tài),Z為終態(tài)集,終態(tài)也稱可接受狀態(tài)或結(jié)束狀態(tài)。

2.2 有窮自動(dòng)機(jī)設(shè)計(jì)

根據(jù)Linux multi-touch協(xié)議的內(nèi)容可以得知,驅(qū)動(dòng)程序是通過發(fā)送一串ABS_MT消息來上報(bào)觸摸點(diǎn)的信息[2]。ABS_MT消息分為以下6類:x坐標(biāo)消息ABS_MT_ POSITION_X、y坐標(biāo)消息ABS_MT_POSITION_Y、同步消息SYN_MT_REPORT、結(jié)束消息SYN_REPORT、槽消息ABS_MT_SLOT、序號(hào)消息ABS_MT_TRACKING_ID。其中同步消息只在A類型協(xié)議中使用,槽消息和序號(hào)消息只在B類型協(xié)議中使用。

A類型協(xié)議規(guī)范的消息串類型比較單一,是由0個(gè)或多個(gè)觸摸點(diǎn)坐標(biāo)消息與結(jié)束消息組成,同步消息位于各個(gè)觸摸點(diǎn)坐標(biāo)之間,每個(gè)觸摸點(diǎn)坐標(biāo)消息均包含完整的x坐標(biāo)消息和y坐標(biāo)消息。

B類型協(xié)議規(guī)范的消息串類型較多,基本結(jié)構(gòu)由slot消息與坐標(biāo)消息或觸摸點(diǎn)序號(hào)消息組成,一個(gè)消息串由多個(gè)基本結(jié)構(gòu)和結(jié)束消息組成。每個(gè)坐標(biāo)消息可以包含完整的x坐標(biāo)消息和y坐標(biāo)消息,也可以只包含其中一個(gè)消息,但在對(duì)新觸摸點(diǎn)進(jìn)行編號(hào)時(shí),必須包含完整的坐標(biāo)消息。

用戶通過消息串獲取觸摸點(diǎn)的信息,而消息串的格式和長(zhǎng)度是不確定的,這使得用戶在識(shí)別和處理消息串時(shí)產(chǎn)生了一定的難度。本文設(shè)計(jì)的中間件的主要功能就是對(duì)消息串進(jìn)行識(shí)別和處理,用戶在使用中間件后,可以直接獲取規(guī)范的觸摸點(diǎn)信息。在設(shè)計(jì)時(shí)采用了有窮自動(dòng)機(jī)算法的設(shè)計(jì)思想,將所要處理的消息串作為有窮自動(dòng)機(jī)的輸入串,中間件即為可以識(shí)別這些輸入串的自動(dòng)機(jī)。自動(dòng)機(jī)把驅(qū)動(dòng)產(chǎn)生的消息串作為輸入串,當(dāng)自動(dòng)機(jī)達(dá)到可接受狀態(tài)時(shí),即表明自動(dòng)機(jī)已經(jīng)識(shí)別并處理完成此消息串[3]。使用有窮自動(dòng)機(jī)的算法設(shè)計(jì)思想可以使中間件的識(shí)別處理過程更加清晰明了。

2.2.1 識(shí)別A類型協(xié)議消息串的自動(dòng)機(jī)設(shè)計(jì)

A類型協(xié)議的消息串由ABS_MT_POSITION_X、ABS_MT_POSITION_Y、SYN_MT_REPORT、SYSYN_REPORT四種類型的消息組成。自動(dòng)機(jī)的狀態(tài)集由初始狀態(tài)S和接收4種消息后的4種狀態(tài)K1、K2、K3、K4組成。K1是自動(dòng)機(jī)接收ABS_MT_POSITION_X消息后轉(zhuǎn)換的狀態(tài);K2是自動(dòng)機(jī)接收ABS_MT_POSITION_Y消息后轉(zhuǎn)換的狀態(tài);K3是自動(dòng)機(jī)接收SYN_MT_REPORT消息后轉(zhuǎn)換的狀態(tài);K4是自動(dòng)機(jī)接收到SYN_REPORT而轉(zhuǎn)換的狀態(tài),K4為可接受狀態(tài)。轉(zhuǎn)換函數(shù)f定義為:

由此可以得到自動(dòng)機(jī)的狀態(tài)轉(zhuǎn)換圖,見圖1。

圖1 識(shí)別A類型協(xié)議消息串的自動(dòng)機(jī)

2.2.2 識(shí)別B類型協(xié)議消息串的自動(dòng)機(jī)設(shè)計(jì)

B類型協(xié)議的消息串由ABS_MT_SLOT、ABS_MT_ TRACKING_ID、ABS_MT_POSITION_X、ABS_MT_POSITION_Y、SYN_REPORT五種類型的消息組成,其中ABS_MT_TRACKING_ID消息又分為ID為-1和非負(fù)兩種類型。自動(dòng)機(jī)的狀態(tài)集由初始狀態(tài)S和接收6種消息后的7種狀態(tài)K1、K2、K3、K4、K5、K6、K7組成。K1是自動(dòng)機(jī)接收ABS_MT_SLOT消息后轉(zhuǎn)換的狀態(tài);K2是自動(dòng)機(jī)接收ABS_MT_TRACKING_ID(非負(fù))消息后轉(zhuǎn)換的狀態(tài);K3是自動(dòng)機(jī)接收ABS_MT_TRACKING_ID(-1)消息后轉(zhuǎn)換的狀態(tài);K4、K5是自動(dòng)機(jī)接收ABS_MT_POSITION_X消息后轉(zhuǎn)換的狀態(tài);K6是自動(dòng)機(jī)接收ABS_ MT_POSITION_Y消息后轉(zhuǎn)換的狀態(tài);K7是自動(dòng)機(jī)接收SYN_REPORT消息后轉(zhuǎn)換的狀態(tài),K7為可接受狀態(tài)。因?yàn)樽詣?dòng)機(jī)接收到ABS_MT_POSITION_X消息后,會(huì)根據(jù)當(dāng)前狀態(tài)的差異而進(jìn)入不同的狀態(tài),所以ABS_MT_ POSITION_X消息對(duì)應(yīng)兩種狀態(tài)。轉(zhuǎn)換函數(shù)f定義為:

由此可以得到此自動(dòng)機(jī)的狀態(tài)轉(zhuǎn)換圖,見圖2。

圖2 識(shí)別B類型協(xié)議消息串的自動(dòng)機(jī)

3 代碼設(shè)計(jì)和實(shí)驗(yàn)測(cè)試

3.1 代碼設(shè)計(jì)

中間件從驅(qū)動(dòng)程序中獲取消息串[4],消息串由多個(gè)input_event結(jié)構(gòu)體組成。input_event結(jié)構(gòu)體有4個(gè)成員,分別是時(shí)間戳、類型、代碼和數(shù)值,類型和代碼用來標(biāo)識(shí)消息,數(shù)值用來存放消息的內(nèi)容。例如ABS_MT_POSITION_X 10消息的類型是EV_ABS,代碼是ABS_MT_ POSITION_X,數(shù)值是10,表明觸摸點(diǎn)的X坐標(biāo)為10。

中間件對(duì)消息串的操作按照上文設(shè)計(jì)的自動(dòng)機(jī)流程進(jìn)行處理。中間件定義一個(gè)狀態(tài)值用于表明中間件當(dāng)前的狀態(tài)。中間件狀態(tài)值初始為初態(tài),根據(jù)輸入消息的類型、代碼和數(shù)值進(jìn)行狀態(tài)轉(zhuǎn)換和相應(yīng)的處理操作,當(dāng)中間件的狀態(tài)為可接受狀態(tài)時(shí),向應(yīng)用程序上報(bào)觸摸點(diǎn)信息并轉(zhuǎn)入初態(tài)進(jìn)行下一輪的處理。當(dāng)中間件在某一狀態(tài)接收到不能識(shí)別的消息時(shí),轉(zhuǎn)入初態(tài),不能識(shí)別的消息是指該消息在該狀態(tài)沒有對(duì)應(yīng)的轉(zhuǎn)入狀態(tài)。

本文設(shè)計(jì)的中間件在使用時(shí)可以作為系統(tǒng)服務(wù)運(yùn)行于操作系統(tǒng)中,也可以作為函數(shù)庫(kù)供用戶程序單獨(dú)使用。

3.2 實(shí)驗(yàn)測(cè)試

編寫了一個(gè)中間件測(cè)試程序,該程序的功能是通過對(duì)觸摸屏的操作實(shí)現(xiàn)圖片的移動(dòng)、縮放和旋轉(zhuǎn)[5],驅(qū)動(dòng)程序由不同的廠商提供。經(jīng)過實(shí)驗(yàn),中間件可以識(shí)別和處理驅(qū)動(dòng)程序上報(bào)的消息串,測(cè)試程序可以使用中間件提供的觸摸點(diǎn)數(shù)據(jù)實(shí)現(xiàn)對(duì)圖片的操作[6]。

結(jié) 語(yǔ)

本文主要設(shè)計(jì)了可以識(shí)別Linux multi-touch協(xié)議消息串的有窮自動(dòng)機(jī)模型,并依照此模型編寫了多點(diǎn)觸摸屏中間件,最后給出了中間件的關(guān)鍵代碼并對(duì)中間件進(jìn)行測(cè)試。使用本文設(shè)計(jì)的中間件,可以使開發(fā)者免去了對(duì)觸摸屏驅(qū)動(dòng)程序原始數(shù)據(jù)的處理而提高開發(fā)效率,同時(shí)也為L(zhǎng)inux multi-touch協(xié)議消息串的處理提供了一種思路。

[1]Multi touch(MT)Protocol[EB/OL].[2016-06].https:// www.kernel.org/doc/Documentation/input/multi-touch-protocol.txt.

[2]宋寶華.Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解:基于最新的Linux4.0內(nèi)核[M].北京:機(jī)械工業(yè)出版社,2015.

[3]林平凱.基于Linux系統(tǒng)的多點(diǎn)觸摸驅(qū)動(dòng)設(shè)計(jì)[J].信息技術(shù)與標(biāo)準(zhǔn)化,2014(6).

[4]崔力升.中間件技術(shù)的綜述[J].科技視界,2014(3):198-198.

[5]劉斌.基于有限狀態(tài)機(jī)的Linux多點(diǎn)觸摸屏驅(qū)動(dòng)設(shè)計(jì)[J].微計(jì)算機(jī)信息,2012,28(3):54-56.

[6]泰國(guó)棟.有限狀態(tài)機(jī)的嵌入式Linux按鍵驅(qū)動(dòng)設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2010,4(1):79-81.

趙建峰(碩士研究生),主要研究方向?yàn)榍度胧较到y(tǒng)與應(yīng)用;陳朔鷹(副教授),主要研究方向?yàn)橛?jì)算機(jī)操作系統(tǒng)、嵌入式系統(tǒng)與應(yīng)用;羅一涵(碩士研究生),主要研究方向?yàn)榍度胧较到y(tǒng)與應(yīng)用。

Linux Multi-touch Screen Middleware Design Based on Finite Automaton

Zhao Jianfeng,Chen Shuoying,Luo Yihan
(School of Computer Science&Technology,Beijing Institute of Technology,Beijing 100081,China)

The application development of multi-touch screen is becoming highlighting.The Linux multi-touch protocol is a standard protocol for Linux input subsystem,it defines the data transmission specification of multi-touch device drivers and is widely used.The identify and deal with multi-touch screen driver data are the basic functions of multi-touch screen applications.In this paper,a multi-touch screen middleware which is in line with the Linux multi-touch protocol specification data is designed by using the finite automaton.The middleware offers an external interface for the applications,which can reduce duplication of work program developers to improve the development efficiency.

multi-touch;middleware;finite automaton;embedded system

TP311

:A

薛士然

2016-06-06)

猜你喜歡
信息設(shè)計(jì)
何為設(shè)計(jì)的守護(hù)之道?
《豐收的喜悅展示設(shè)計(jì)》
流行色(2020年1期)2020-04-28 11:16:38
瞞天過?!律O(shè)計(jì)萌到家
設(shè)計(jì)秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
有種設(shè)計(jì)叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
展會(huì)信息
設(shè)計(jì)之味
舒適廣告(2008年9期)2008-09-22 10:02:48
信息
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 国产美女在线观看| 香蕉国产精品视频| 国产视频a| 久久婷婷六月| 九九精品在线观看| 专干老肥熟女视频网站| 99在线观看免费视频| 精品色综合| 精品成人一区二区三区电影| 久久精品无码国产一区二区三区| 极品私人尤物在线精品首页| 一级爆乳无码av| 国产毛片高清一级国语 | 无码国产伊人| 天天爽免费视频| 98超碰在线观看| 国产欧美视频综合二区| 国产精品免费露脸视频| 色网站免费在线观看| 美女被操黄色视频网站| 精品国产91爱| 国产精品专区第一页在线观看| 日本高清成本人视频一区| 69精品在线观看| 日韩久久精品无码aV| 黑人巨大精品欧美一区二区区| 国产主播一区二区三区| 精品国产香蕉伊思人在线| 中文字幕乱码二三区免费| 日韩中文无码av超清| 亚洲 成人国产| 国产一级小视频| 奇米精品一区二区三区在线观看| 一级爆乳无码av| 国产精品永久免费嫩草研究院| 自慰网址在线观看| 国产网站一区二区三区| 亚洲综合色婷婷中文字幕| 亚洲一区二区在线无码| 91精品国产综合久久不国产大片| 中文字幕色站| 午夜福利免费视频| 亚洲国产成人无码AV在线影院L| 国产老女人精品免费视频| 在线色国产| 中文字幕不卡免费高清视频| 视频二区中文无码| 国产日韩av在线播放| 天天躁狠狠躁| 2021国产精品自拍| 伊人91视频| 国产亚洲欧美日韩在线一区二区三区| 一本视频精品中文字幕| 中文字幕亚洲综久久2021| 好紧太爽了视频免费无码| 国产青青操| 久久99热这里只有精品免费看| 亚洲欧美日韩另类在线一| 国产精品无码制服丝袜| 欧美日韩午夜| 亚洲欧美日韩天堂| 在线a网站| 亚洲精品桃花岛av在线| 亚洲国模精品一区| 亚洲AV成人一区国产精品| 91人妻在线视频| 国产激情影院| 91福利片| 国产精品成人不卡在线观看| 亚洲人成网站观看在线观看| 亚洲Va中文字幕久久一区| 国产成人综合亚洲欧美在| 99久久精品国产精品亚洲| 国产一级在线观看www色| 啪啪啪亚洲无码| 最新国产麻豆aⅴ精品无| 久久这里只有精品8| 亚洲色婷婷一区二区| 国产另类视频| 中文字幕不卡免费高清视频| 波多野结衣一二三| 国产成人综合日韩精品无码首页 |