freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

觸摸屏控制實驗設計報告(編輯修改稿)

2025-08-30 07:08 本頁面
 

【文章內容簡介】 才能保證電容達到穩(wěn)定狀態(tài)。 我們可以通過編程讓處理器在FIFO存有任何有效數據時就產生中斷,或在輸入FIFO裝滿時產生中斷。由于我們通常會做多次讀取,因此驅動程序一般會在FIFO裝滿時產生中斷。當該中斷產生時,會有12個原始的模數轉換數據等待處理,分別對應于X軸的6次讀數和Y軸的6次讀數。 一旦序列器控制字在LH79524上被編好程,驅動程序獲取原始讀數所需要做的就是命令序列器執(zhí)行。當EOS(序列結束)中斷產生時,我們獲得的結果就可以用于采集和檢查了。序列器可以被配置為當屏幕被觸摸時自動觸發(fā)、根據軟件命令觸發(fā)或連續(xù)觸發(fā)三種模式。 這里不可避免要進行折衷考慮。如果我們要求較窄的穩(wěn)定窗口,那么驅動程序將無法跟蹤快速的拖曳操作。對于在簽名輸入期間發(fā)生的滑動或筆劃跟蹤事件來說快速拖曳是非常重要的。如果我們加寬穩(wěn)定窗口,我們就可能面臨著風險,這些風險包括接收到不精確的觸摸數據和上文描述過的處于臨界狀態(tài)的層連接結果。因此需要通過實驗來確定適合自己系統(tǒng)的最佳值。智能化的觸摸控制器同樣允許你通過軟件命令調整這些參數。 每個樣值所需的讀取次數、連續(xù)讀取間允許的偏差以及采樣速率是每個驅動程序的全部可編程參數??梢酝ㄟ^defines調整這些參數以便在你的系統(tǒng)上產生最佳結果。智能化的外部觸摸控制器一般會以很快的速度讀取數十或數百個數據用以改善精度。由于我們是用核心CPU完成這種過濾,因此我們需要確定有多少時間可以合理地分配給觸摸采樣任務。嵌入式系統(tǒng)包含折衷,你的任務就是想出最佳的折衷辦法,以產生能使用戶滿意的系統(tǒng)。 2 . 4 . 2觸摸屏的校準 電阻觸摸屏需要校準,我們需要一些參考值,以便我們能夠將接收到的原始模數轉換值轉換成高層軟件所需的屏幕像素坐標。理想情況下校準程序只要在產品初次加電測試過程中運行一次就可以了,參考值被存儲在非易失性存儲器中。我已經安排好讓觸摸驅動程序在一啟動時就運行校準程序,但要記住,你要把參考值保存起來,以免讓用戶在以后的加電啟動期間再做校準。不過無論如何你仍然需要向用戶提供一種進入校準例程的途徑,從而在由于溫度漂移或其它因素造成校準不準確時進行重新校準。 校準例程的名稱是CalibrateTouchScreen(),它是一個簡單的逐步操作過程,會在屏幕上向用戶提供圖形目標,并要求用戶觸摸目標,然后記錄下原始的ADC讀數,該讀數將用于后面的原始數據轉換到像素位置的調整例程。圖形目標和用戶提示通過使用便攜式圖形用戶界面(PEG)圖形軟件API顯示在屏幕上,不過這也可以通過類似的圖形軟件實現。 在理想情況下你只需兩組(X和Y)原始數據,即在屏幕對角讀取的最小和最大值。而在實際應用中,因為許多電阻觸摸屏存在顯著的非線性,因此如果在最小和最大值之間簡單的插入位置數值會導致驅動程序非常的不精確。 非線性意味著在屏幕上的等距物理移動會導致原始數據的增量不等。更糟的情況下,即使我們只改變X軸的觸摸位置,但從Y軸讀取的數據也會發(fā)生很大的變化。 得出的結論是采用的校準點越多越好,盡量減小內插窗口的間距,才能產生可能的最佳精度。如果你能在工廠做一次校準,那么得到大量采樣點并不是件難事。如果無法在工廠完成校準,那你必須確定用戶需要輸入多少個點才能產生足夠精確的校準。本文提供的校準例程用了四個數據點,即屏幕的每個角一個。對于參考板上的VGA分辨率(640x480)顯示屏幕來說,這樣做的精度可達到一個或二個像素之內。對于更高的屏幕分辨率或其它觸摸屏,要產生一個精確的驅動程序這些點也許過多,也許不夠。做出準確判定的唯一途徑只能是對具體的硬件進行大量反復測試。 2 . 4 . 3 正常操作 一旦校準過程完成,我們就可以開始正常的操作,并開始向更高層軟件發(fā)送觸摸事件。我把提供的每個觸摸驅動程序在每種支持的RTOS環(huán)境中都作為低優(yōu)先級任務加以執(zhí)行。任務的入口名叫PegTouchTask,因為驅動程序需要與PEG圖形軟件進行交互操作。這些驅動程序修改后,可與其它圖形軟件甚至你自己編寫的用戶接口環(huán)境協(xié)同工作。在任何時候PegTouchTask總是先調用硬件配置例程,然后調用校準例程,最后進入等待觸摸輸入的無限循環(huán)中。 LH79524驅動程序以相似的方式工作。當產生PEN_DOWN中斷時,我們命令ADC序列器開始進行轉換。驅動程序以20Hz的速度工作,檢查位置的變化,直到屏幕不再處于被觸摸的狀態(tài)。 當屏幕被觸摸時,我們需要對每個軸連續(xù)讀取多個轉換值以確定觸摸位置是否穩(wěn)定。如果任何兩個連續(xù)讀數中的增量或變化超出defined定義的噪聲窗口范圍,我們就要重新開始。我們一直這樣做,直到讀取的多個連續(xù)值處于defined定義的穩(wěn)定范圍內,此時我們可以調整該結果并向更高層軟件報告更新。當屏幕不再被觸摸時,我們又可以中斷此任務,等待觸摸輸入事件的發(fā)生。 在每個轉換過程的前后,驅動程序必須檢查并確認屏幕仍處于被觸摸狀態(tài)。我們不希望向更高層的軟件報告實際上是處于開路狀態(tài)的穩(wěn)定讀數。我也看到過有的驅動程序在屏幕被初始觸摸后會忽略掉N個讀數。不過對于這兩塊參考電路板,我沒有發(fā)現忽略掉一定數量的初始讀數是有必要或有益的。 第三章 觸摸屏控制器的軟件設計3 . 1 嵌入式Linux系統(tǒng)下的驅動程序設備驅動程序是Linux內核的重要組成部分,控制了操作系統(tǒng)和硬件設備之間的交互。Linux的設備治理是和文件系統(tǒng)緊密結合的,各種設備都以文件的形式存放在/dev目錄下,成為設備文件。應用程序可以打開、關閉、讀寫這些設備文件,對設備的操作就像操作普通的數據文件一樣簡便。為開發(fā)便利、提高效率,本設計采用可安裝模塊方式開發(fā)調試觸摸屏驅動程序。Linux操作系統(tǒng)通過系統(tǒng)調用和硬件中斷完成從用戶空間到內核空間的控制轉移。設備驅動模塊的功能就是擴展內核的功能,主要完成兩部分任務:一個是系統(tǒng)調用,另一個是處理中斷。圖2是一個設備驅動模塊動態(tài)掛接、卸載和系統(tǒng)調用的全過程。系統(tǒng)調用部分則是對設備的操作過程,比如 open,read,write,ioctl等操作,設備驅動程序所提供的這組入口點由幾個結構向系統(tǒng)進行說明,分別是file_operations數據結構、inode數據結構和file 數據結構。內核內部通過file結構識別設備,通過file_operations數據結構提供文件系統(tǒng)的入口點函數,也就是訪問設備驅動的函數,結構中的每一個成員都對應著一個系統(tǒng)調用。在嵌入式系統(tǒng)的開發(fā)中,我們一般僅僅實現其中幾個接口函數:read、write、open、ioctl及 release就可以完成應用系統(tǒng)需要的功能。寫驅動程序的任務之一就是完成file_operations中的函數指針μClinux繼承了Linux的設備管理方法,將所有的設備看做具體的文件,通過文件系統(tǒng)層對設備進行訪問。所以在Clinux的框架結構中,和設備相關的處理可以分為兩個層次――文件系統(tǒng)層和設備驅動層。設備驅動層屏蔽具體設備的細節(jié),文件系統(tǒng)層則向用戶提供一組統(tǒng)一的規(guī)范的用戶接口。這種設備管理方法可以很好地做到“與設備無關性”,使Clinux可以根據硬件外設的發(fā)展進行方便的擴展,比如要實現一個設備驅動程序,只要根據具體的硬件特性向文件系統(tǒng)提供一組訪問接口即可。 3 . 1 . 1 驅動程序在內核的裝載方法 驅動程序在內核中裝載的方式有兩種:一種是直接編譯進內核,在系統(tǒng)初始化的時候就對設備進行注冊;一種是模塊化加載的方法,將驅動程序編譯成目標文件(*.o),需要添加設備時,使用insmod命令向系統(tǒng)注冊,停止使用時,用rmmod命令卸載。對于觸摸屏這種基本的輸入工具,建議采取直接編譯進內核的方式,這樣系統(tǒng)一啟動就可以使用了。 向內核注冊一個字符設備的函數為:externintregister_chrdev(unsignedintmajor,constchar*name, structfile_operations*fops);內核用主設備號和次設備號惟一地標識一個設備。參數major對應所請求的主設備號,name對應設備的名字,fops是一個指向file_operations結構的指針,它是Clinux下編寫驅動程序用到的一個關鍵的數據結構,它提供了應用空間與驅動程序的調用接口。這個數據結構的每一項都指向驅動程序完成的一個功能。 (TaggedStructureInitializationSyntax),這種語法可移植性更好,程序的可讀性和代碼的緊湊性都比較好。以觸摸屏為例: static struct file_operations ts_fops={ owner:THIS_MODULE, read:ts_read, //讀數據操作 poll:ts_poll, //非阻塞操作 ioctl:ts_ioctl, //I/O控制操作 open:ts_open, //打開設備 release:ts_release, //釋放設備 fasync:ts_fasync, //異步觸發(fā)} 完整的結構還包括llseek、readdir等函數指針,只是由于在本程序中沒有用到,所以省略不寫,內核把它們默認為空(NULL)。 3 . 2 .觸摸屏驅動程序的流程及關鍵函數在本設計中。驅動程序主要設計思想是:驅動程序在初始化結束后,進入空閑狀態(tài),等待中斷的到來。一旦筆中斷(pen_irq)發(fā)生,則進入中斷處理程序,
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1