設為主頁(yè)  加入收藏
 
·I2S數字功放IC/內置DSP音頻算法功放芯片  ·馬達驅動(dòng)IC  ·2.1聲道單芯片D類(lèi)功放IC  ·內置DC/DC升壓模塊的D類(lèi)功放IC  ·鋰電充電管理IC/快充IC  ·無(wú)線(xiàn)遙控方案  ·直流無(wú)刷電機驅動(dòng)芯片
當前位置:首頁(yè)->方案設計
手勢路徑追蹤大揭密:觸控感測設計輕松上手
文章來(lái)源: 更新時(shí)間:2011/11/19 13:36:00
在線(xiàn)咨詢(xún):
給我發(fā)消息
張代明 3003290139
給我發(fā)消息
小鄢 2850985542
給我發(fā)消息
李湘寧 2850985550
13713728695
 

      多點(diǎn)觸控已是當今觸控技術(shù)開(kāi)發(fā)者最熱衷的研究課題?此坪(jiǎn)單的觸控動(dòng)作,其實(shí)背后隱藏著(zhù)錯綜復雜的運作過(guò)程,包括將觸控動(dòng)作轉成數位訊號,并推算觸碰位置,然后和主控端進(jìn)行通訊并執行解譯等步驟,每一個(gè)設計環(huán)節都將影響最終效能的呈現。

  本文將對追蹤觸碰動(dòng)作進(jìn)行全面的闡述,從電容感測的物理原理,一直到螢幕的最終動(dòng)作。包括介紹系統如何偵測到手指的位置,以及判讀手指位置的各種方法,并介紹手機的軟體堆疊,說(shuō)明應用程式的設計方法,最后再揭露雙指捏放手勢與螢幕縮放之間的設計內幕。

  電容/系統設置到位觸控操作更靈活

  大部分的智慧型手機觸控螢幕都能對手指電容產(chǎn)生反應,觸控螢幕內有許多排列整齊的感測器,會(huì )偵測出因手指移動(dòng)所導致的電容變化。當你的手指觸碰到螢幕時(shí),就會(huì )影響這些感測器的自容(Self-capacitance),以及彼此之間的互容(Mutual Capacitance)。大多數智慧型手機都是感測互容而不是自容。由于互容是反映一對感測器之間的互動(dòng)關(guān)系,因此可用來(lái)收集有關(guān)螢幕上每個(gè)位置的資訊(X×Y個(gè)感測點(diǎn));自容則僅能用來(lái)偵測每個(gè)感測器的反應(X+Y個(gè)樣本),而不是每個(gè)點(diǎn)。

  電容感測含有數個(gè)層:頂層是玻璃或塑膠材質(zhì),接者依序是一個(gè)光學(xué)透明膠(OCA)層、觸控感測器及平面液晶顯示器(LCD)。觸控感測器是由許多感測元件所排列而成的網(wǎng)格,尺寸通常為5毫米×5毫米。

  這些感測器采用氧化銦錫(ITO)制成。 ITO具有許多特別的屬性,為制作觸控螢幕的絕佳材質(zhì):超過(guò)90%透明度并具有導電性。有些設計采用鉆石狀圖紋,不會(huì )和LCD的紋線(xiàn)重疊,視覺(jué)觀(guān)感較佳,其他則采用較簡(jiǎn)單的「直條與橫條」圖案設計。如果在充分的光照下,以正確的角度觀(guān)察你的裝置,并關(guān)閉液晶螢幕,就能看到ITO感測器的線(xiàn)紋。

  互容基本原理

  圖1 互容基本原理

  基本上,感測互容的原理(圖1)和感測自容完全不同。感測自容通常是量測含有感測器的電阻-電容(RC)電路之時(shí)間常數;感測互容的程序則包括量測X軸與Y軸感測器之間的互動(dòng)。系統會(huì )感測經(jīng)過(guò)每個(gè)X軸與Y軸的訊號,借此偵測感測器之間的耦合值(圖2)。耐人尋味的是,手指的觸碰動(dòng)作會(huì )降低互容耦合值,但手指觸碰動(dòng)作卻會(huì )增加自容的值。

  

  圖2 互容偵測反應

  不論是哪一種方法,光量測電容是不夠的,系統必須回應的是電容的變化,而不是個(gè)別的電容值。系統會(huì )對每個(gè)感測器設定一個(gè)基準值,這個(gè)基準值是經(jīng)過(guò)長(cháng)時(shí)間溫度與其他因素變化后求出的訊號長(cháng)期平均值,讓系統允許訊號在各種狀況下產(chǎn)生些微的波動(dòng)。在建構觸控螢幕系統時(shí)面臨其中一項挑戰,就是建立適當的基準值。例如,當手指觸碰到螢幕,系統必須能適當地啟動(dòng)。當沾水的手指或手掌碰到螢幕時(shí),系統也必須能啟動(dòng)。

  當感測到的電容減去基準值時(shí),就得到一個(gè)訊號值陣列,代表圖3所示的手指觸碰狀況。有許多種方法可根據這項資訊來(lái)判斷手指的位置,其中最簡(jiǎn)單的方法是計算質(zhì)心--質(zhì)量中心(Centriod),計算出一維或二維軸向感測數值的加權平均值。運用一維質(zhì)心計算法,根據上述例子的X軸數據,可算出(5×1+15×2+25×3+10×4)/(5+15+25+10)=150/55= 2.73。接著(zhù)以液晶螢幕的解析度為標準,將這個(gè)位置值適當地縮放,以便和螢幕重疊。若ITO感測器的圖案超出液晶螢幕的邊緣,則必須進(jìn)行一些轉換計算。

  由個(gè)別的電容值判定手指位置

  圖3 由個(gè)別的電容值判定手指位置

  接觸范圍的邊緣,讓手指位置的問(wèn)題變得更復雜。舉上述的陣列為例,若面板的邊緣處碰到這些線(xiàn)條區,采用上述的簡(jiǎn)單質(zhì)心推算法,當左側下移時(shí),右側就會(huì )開(kāi)始被「上拉」。為解決這個(gè)問(wèn)題,必須用特別的邊緣處理技巧來(lái)檢查剩下訊號的形狀,再推測手指沒(méi)有接觸到螢幕表面的部分。

  CPU/USB助陣 觸控感測功能升級

  當一個(gè)有效的觸碰訊號出現,且觸碰動(dòng)作的X/Y軸座標被偵測到之后,主控端中央處理器(CPU)就可以得到要處理的資料。嵌入式觸控螢幕元件會(huì )透過(guò)I2C介面或串列周邊介面(SPI)來(lái)進(jìn)行通訊。較大尺寸的觸控螢幕通常會(huì )采用通用序列匯流排(USB)介面,因為包括Windows、Mac OS以及Linux等作業(yè)系統,都有內建USB介面的人機介面裝置(HID)支援功能。

  雖然采用多個(gè)不同的介面,作業(yè)系統的驅動(dòng)程式到最后做的事卻大致類(lèi)似,以Android的驅動(dòng)程式為例,由于A(yíng)ndroid與MeeGo都以L(fǎng)inux為開(kāi)發(fā)基礎,因此這三種作業(yè)系統都使用類(lèi)似的驅動(dòng)程式。

  觸控螢幕驅動(dòng)程式的岔斷觸發(fā)器是一個(gè)岔斷服務(wù)函式(Interrupt Service Routine, ISR),負責作業(yè)執行緒的排程。 ISR中并沒(méi)有執行任何作業(yè)來(lái)維護岔斷的延遲以及避免優(yōu)先權倒置。當作業(yè)系統呼叫作業(yè)執行緒,會(huì )啟動(dòng)一個(gè)通訊交易,從裝置讀取資料,然后切換至睡眠模式。當通訊交易完成后,主控端驅動(dòng)程式就得到自己要處理的資料。

  主控端驅動(dòng)程式會(huì )把裝置制造商采用的資料格式,轉換成標準格式。在Linux環(huán)境中,驅動(dòng)程式會(huì )透過(guò)一連串的次函式(Subroutine)呼叫來(lái)復制事件區域,接著(zhù)再透過(guò)一個(gè)最終呼叫來(lái)傳送事件資料。例如,要建立一個(gè)單一觸碰Linux輸入事件,整段程式可寫(xiě)成:

  input_report_abs(ts->input, ABS_X, t->st_x1); // Set X location

  input_report_abs(ts->input, ABS_Y, t->st_y1); // Set Y location

  input_report_abs(ts->input, ABS_PRESSURE, t->st_z1); // Set Pressure

  input_report_key(ts->input, BTN_TOUCH, CY_TCH); // Finger is pressed

  input_report_abs(ts->input, ABS_TOOL_WIDTH, t->tool_width);// Set width

  input_sync(ts->input);// Send event

  提升觸控效能 Android不可或缺

  這個(gè)觸控事件之后交給作業(yè)系統來(lái)處理,如Android會(huì )把事件的歷史資料儲存在手勢處理緩沖區,然后把事件傳遞給View這個(gè)類(lèi)別。有多款觸控螢幕元件,如賽普拉斯(Cypress)TrueTouch產(chǎn)品已經(jīng)支援硬體手勢處理功能(圖4)。硬體手勢處理功能可紓解主控端作業(yè)系統的負荷,分擔手勢處理的工作,還能依照不同情況免去處理所有觸控資料的負擔,一直到看到手勢為止。

  手勢觸控類(lèi)型

  圖4 手勢觸控類(lèi)型

  舉例來(lái)說(shuō),若你正開(kāi)發(fā)相片瀏覽器,主控端不必處理數十或數百個(gè)觸控事件的封包,就能讓使用者翻閱下一張相片,直到使用者實(shí)際翻閱下一張相片之前,不會(huì )出現任何岔斷。

  感測/回應Android View/Widget至關(guān)重要

  Android的View類(lèi)別會(huì )判斷觸控事件發(fā)生時(shí)系統正執行哪些應用,在螢幕上顯示的每個(gè)應用,都有至少一個(gè)View類(lèi)別。這個(gè)類(lèi)別中含有許多方法負責處理使用者的輸入,其中包括OnTouchListener,負責處理從輸入驅動(dòng)器收到的資訊,以及MotionEvent中的額外資訊。

  如果你曾寫(xiě)過(guò)Windows環(huán)境下能接收滑鼠事件的程式,就會(huì )驚訝地發(fā)現滑鼠事件與觸控介面之間的差異。 MotionEvent這個(gè)類(lèi)別內含許多方法,包括WM_LBUTTONDOWN常見(jiàn)到的方法,例如GetX與GetY,以及處理觸控的位置還有手指停留在面板上的時(shí)間。

  當應用看到事件后,就會(huì )對觸控動(dòng)作做出回應,這種回應通常是由微程式(Widget)來(lái)執行,而不是由應用程式來(lái)負責。 Android的Widget內含一些簡(jiǎn)單項目,像是按鈕等,還有包括許多復雜的介面,像是資料挑選器(Data Picker),以及附有取消鈕的進(jìn)度顯示條視窗。

  應用程式也可直接處理與回應觸控動(dòng)作。繪圖程式可選擇混用兩種方法,在繪圖區使用直接觸控輸入功能,并搭配Widget負責處理選單與按鈕的操作功能。

  Windows /Android手勢辨認各擅勝場(chǎng)

  Windows Touch處理功能與Android之間的一項差別,就是解譯手勢。 Android提供為數眾多的手勢創(chuàng )作工具,但沒(méi)有提供任何內建的手勢定義。每個(gè)設計者都可自由創(chuàng )作自己的手勢(圖5),包括像手寫(xiě)辨識等復雜的手勢。這種方法催生出許多應用,像是字符辨識的搜尋功能,但意謂在兩個(gè)不同的Android平臺上,同樣的手勢動(dòng)作啟動(dòng)的是不一樣的功能。

  Google通用公共授權Android標志

  圖5 Google通用公共授權Android標志

  至于Windows則提供一組固定且眾所周知的手勢,并支援作業(yè)系統層級應用,包括GID_PAN、GID_ZOOM、GID_ROTATE、GID_PRESSANDTAP及GID_TWOFINGERTAP。這些手勢動(dòng)作在任何程式都啟動(dòng)相同的動(dòng)作,這點(diǎn)讓使用者能快速學(xué)會(huì )使用新程式。兩種方法都各自有其優(yōu)點(diǎn)。

  觸控設計邁向未來(lái)的過(guò)程中會(huì )遇到技術(shù)層面的挑戰,還得應付許多層面之間的互動(dòng)問(wèn)題。從選擇材料、制造到電子,都是觸控感測必須面臨的議題。當系統把觸控動(dòng)作轉成數位訊號后,還必須推算其位置和主控端進(jìn)行通訊以及執行解譯等步驟。如今這些問(wèn)題都已被克服,軟體研發(fā)業(yè)者必須在這些基礎上開(kāi)發(fā)令人驚艷的應用。

 
 
 
·藍牙音箱的音頻功放/升壓/充電管
·單節鋰電內置升壓音頻功放IC選型
·HT7179 12V升24V內置
·5V USB輸入、三節鋰電升壓型
·網(wǎng)絡(luò )主播聲卡專(zhuān)用耳機放大IC-H
 
M12269 河北發(fā)電機組 HT366 ACM8629 HT338 

業(yè)務(wù)洽談:手機:13713728695(微信同號)   QQ:3003207580  EMAIL:panbo@szczkjgs.com   聯(lián)系人:潘波

地址:深圳市寶安西鄉航城大道航城創(chuàng )新創(chuàng )業(yè)園A5棟307/309

版權所有:深圳市永阜康科技有限公司  備案號:粵ICP備17113496號

在线亚洲人成电影_中文有码国产精品欧美激情_免费大片一级a一级久久三_av天堂东京热无码专区