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)用程序開(kāi)發(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)用程序使用,可以減少程序開(kāi)發(fā)人員的重復(fù)工作,提高開(kāi)發(fā)效率。

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

引 言

嵌入式系統(tǒng)軟硬件的多樣性,造成硬件設(shè)備驅(qū)動(dòng)程序和用戶(hù)應(yīng)用程序之間接口的連接問(wèn)題;應(yīng)用軟件必須進(jìn)行相應(yīng)的移植工作才可以在不同的硬件系統(tǒng)中運(yùn)行,同時(shí)不同軟件在同一個(gè)硬件平臺(tái)編寫(xiě)時(shí),也可能出現(xiàn)重復(fù)開(kāi)發(fā)的現(xiàn)象。針對(duì)上述兩種現(xiàn)象,可以使用中間件技術(shù)來(lái)解決。中間件對(duì)下層系統(tǒng)的復(fù)雜性進(jìn)行屏蔽并對(duì)上層提供統(tǒng)一的接口,直接供開(kāi)發(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é)議分為兩種類(lèi)型,以便不同類(lèi)型的硬件設(shè)備使用。A類(lèi)型協(xié)議用于不具備觸摸點(diǎn)區(qū)分和跟蹤能力的硬件設(shè)備,B類(lèi)型協(xié)議用于具備觸摸點(diǎn)區(qū)分和跟蹤能力的硬件設(shè)備。B類(lèi)型協(xié)議對(duì)每個(gè)觸摸點(diǎn)進(jìn)行編號(hào),每個(gè)編號(hào)與一個(gè)槽相對(duì)應(yīng),并使用槽來(lái)區(qū)分不同的觸摸點(diǎn)。當(dāng)一個(gè)觸摸點(diǎn)離開(kāi)時(shí),對(duì)應(yīng)的槽被釋放,被釋放的槽可以被新的觸摸點(diǎn)重復(fù)使用。

使用A類(lèi)型協(xié)議的硬件設(shè)備因?yàn)椴荒軈^(qū)分和跟蹤觸摸點(diǎn),其驅(qū)動(dòng)程序必須定時(shí)上報(bào)當(dāng)前所有的觸摸點(diǎn)信息,而使用B類(lèi)型協(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)體,包含類(lèi)型、數(shù)值、時(shí)間戳等成員。

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

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

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

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

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

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

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

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

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

有窮自動(dòng)機(jī)(也稱(chēng)有限自動(dòng)機(jī))是一種識(shí)別模型,它能準(zhǔn)確地識(shí)別正規(guī)集。有窮自動(dòng)機(jī)分為兩類(lèi):確定有窮自動(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)也稱(chēng)可接受狀態(tài)或結(jié)束狀態(tài)。

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

根據(jù)Linux multi-touch協(xié)議的內(nèi)容可以得知,驅(qū)動(dòng)程序是通過(guò)發(fā)送一串ABS_MT消息來(lái)上報(bào)觸摸點(diǎn)的信息[2]。ABS_MT消息分為以下6類(lèi):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類(lèi)型協(xié)議中使用,槽消息和序號(hào)消息只在B類(lèi)型協(xié)議中使用。

A類(lèi)型協(xié)議規(guī)范的消息串類(lèi)型比較單一,是由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類(lèi)型協(xié)議規(guī)范的消息串類(lèi)型較多,基本結(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)消息。

用戶(hù)通過(guò)消息串獲取觸摸點(diǎn)的信息,而消息串的格式和長(zhǎng)度是不確定的,這使得用戶(hù)在識(shí)別和處理消息串時(shí)產(chǎn)生了一定的難度。本文設(shè)計(jì)的中間件的主要功能就是對(duì)消息串進(jìn)行識(shí)別和處理,用戶(hù)在使用中間件后,可以直接獲取規(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í)別處理過(guò)程更加清晰明了。

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

A類(lèi)型協(xié)議的消息串由ABS_MT_POSITION_X、ABS_MT_POSITION_Y、SYN_MT_REPORT、SYSYN_REPORT四種類(lèi)型的消息組成。自動(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)換圖,見(jiàn)圖1。

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

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

B類(lèi)型協(xié)議的消息串由ABS_MT_SLOT、ABS_MT_ TRACKING_ID、ABS_MT_POSITION_X、ABS_MT_POSITION_Y、SYN_REPORT五種類(lèi)型的消息組成,其中ABS_MT_TRACKING_ID消息又分為ID為-1和非負(fù)兩種類(lèi)型。自動(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)換圖,見(jiàn)圖2。

圖2 識(shí)別B類(lèi)型協(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í)間戳、類(lèi)型、代碼和數(shù)值,類(lèi)型和代碼用來(lái)標(biāo)識(shí)消息,數(shù)值用來(lái)存放消息的內(nèi)容。例如ABS_MT_POSITION_X 10消息的類(lèi)型是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ù)輸入消息的類(lèi)型、代碼和數(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)沒(méi)有對(duì)應(yīng)的轉(zhuǎn)入狀態(tài)。

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

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

編寫(xiě)了一個(gè)中間件測(cè)試程序,該程序的功能是通過(guò)對(duì)觸摸屏的操作實(shí)現(xiàn)圖片的移動(dòng)、縮放和旋轉(zhuǎn)[5],驅(qū)動(dòng)程序由不同的廠商提供。經(jīng)過(guò)實(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ī)模型,并依照此模型編寫(xiě)了多點(diǎn)觸摸屏中間件,最后給出了中間件的關(guān)鍵代碼并對(duì)中間件進(jìn)行測(cè)試。使用本文設(shè)計(jì)的中間件,可以使開(kāi)發(fā)者免去了對(duì)觸摸屏驅(qū)動(dòng)程序原始數(shù)據(jù)的處理而提高開(kāi)發(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)開(kāi)發(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
瞞天過(guò)海——仿生設(shè)計(jì)萌到家
設(shè)計(jì)秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
有種設(shè)計(jì)叫而專(zhuān)
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
主站蜘蛛池模板: 在线日本国产成人免费的| 午夜电影在线观看国产1区| 亚洲福利片无码最新在线播放| 视频一本大道香蕉久在线播放| 国产啪在线| 中文字幕佐山爱一区二区免费| 美女无遮挡被啪啪到高潮免费| 欧美日韩激情| 人人91人人澡人人妻人人爽| 亚洲精品视频网| 国产网站免费| 中文字幕自拍偷拍| 国产精品人成在线播放| 国产成人亚洲毛片| 亚洲综合九九| 欧美精品亚洲精品日韩专区va| 夜夜操狠狠操| 国产高清毛片| 伊伊人成亚洲综合人网7777| 91国内在线观看| 免费啪啪网址| 国产成人精品无码一区二| 一级成人a做片免费| 国产精品lululu在线观看| 欧美在线综合视频| 久久香蕉国产线| 在线人成精品免费视频| 国产在线97| 久久久久无码国产精品不卡| 青青青国产精品国产精品美女| 色综合婷婷| 99久久精品国产麻豆婷婷| 亚洲AV无码乱码在线观看代蜜桃| 高清无码不卡视频| 99爱视频精品免视看| 国产chinese男男gay视频网| 免费A∨中文乱码专区| 永久成人无码激情视频免费| 中文字幕波多野不卡一区| 高清视频一区| 欧洲亚洲欧美国产日本高清| 国产福利影院在线观看| 国产美女自慰在线观看| 免费无码AV片在线观看国产| 亚洲中文字幕在线一区播放| 亚洲综合18p| 久久永久精品免费视频| 日韩精品欧美国产在线| 久久精品人人做人人综合试看| 精品人妻AV区| 亚洲美女一级毛片| 欧洲欧美人成免费全部视频| 无码中文字幕精品推荐| 欧美日韩一区二区在线播放 | 亚洲日韩久久综合中文字幕| 国产v精品成人免费视频71pao| 国产久操视频| 亚洲区一区| av一区二区三区高清久久| 日韩欧美国产精品| 美女国产在线| 亚洲精品自拍区在线观看| 久久亚洲天堂| 狠狠色噜噜狠狠狠狠色综合久| 2020国产精品视频| 亚洲欧美h| 国产打屁股免费区网站| AV片亚洲国产男人的天堂| 日韩在线播放中文字幕| a级毛片免费网站| 国产高潮视频在线观看| 午夜精品久久久久久久无码软件 | 亚洲国产成人久久77| 亚洲一级毛片免费观看| 好紧好深好大乳无码中文字幕| 免费看av在线网站网址| 国产精品嫩草影院视频| 亚洲欧洲日韩综合色天使| 色天堂无毒不卡| 72种姿势欧美久久久久大黄蕉| 久久免费成人| 欧美激情第一欧美在线|