寇俊梟 王魯云
摘 要:linus技術應用廣泛,本文以三星2410s為基礎,設計實現了觸摸屏程序,具有特性,經過驗證,實現了設計功能。
關鍵詞:觸摸屏;程序設計
觸摸屏(touch screen)又稱為“觸控屏”、“觸控面板”,是一種可接收觸頭等輸入訊號的感應式液晶顯示裝置,當接觸了屏幕上的圖形按鈕時,屏幕上的觸覺反饋系統(tǒng)可根據預先編程的程式驅動各種連結裝置,可用以取代機械式的按鈕面板,并借由液晶顯示畫面制造出生動的影音效果。觸摸屏作為一種最新的電腦輸入設備,它是目前最簡單、方便、自然的一種人機交互方式。它賦予了多媒體以嶄新的面貌,是極富吸引力的全新多媒體交互設備。主要應用于公共信息的查詢、領導辦公、工業(yè)控制、軍事指揮、電子游戲、點歌點菜、多媒體教學、房地產預售等。
1 引言
隨著IT產業(yè)的不斷發(fā)展,用戶對網站體驗要求也越來越高,而目前主流網站后端承載系統(tǒng)都是Linux系統(tǒng),目前Android手機全部基于Linux內核研發(fā)。企業(yè)大數據、云存儲、虛擬化等先進技術都是基于Linux系統(tǒng)。2010年據有關權威部門統(tǒng)計:將來幾年內我國軟件行業(yè)的從業(yè)機會十分龐大,中國每年對軟件人才的需求將達到50萬人左右。而對于Linux專業(yè)人才的就業(yè)前景,更是廣闊;據悉在未來5-10年內Linux專業(yè)人才的需求將達到120萬+!尤其是有經驗的資深的Linux工程師目前非常的缺乏,薪資也是非常誘人,平均月薪都是15-20K,能力強的薪資更高。
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中的函數指針。
關鍵代碼:
1 typedef struct
2 {
3 unsigned int penStatus; /* PEN_UP, PEN_DOWN, PEN_SAMPLE */
4 TS_RET buf[MAX_TS_BUF]; /*
緩沖區(qū),存放點擊信息 */
5 unsigned int head, tail; /*
緩沖區(qū)頭和尾 */
6 wait_queue_head_t wq; /*等待隊列*/
7 spinlock_t lock;//自旋鎖
8 #ifdef USE_ASYNC
9 struct fasync_struct *aq;
10 #endif
11 struct cdev cdev;
12 } TS_DEV;//觸摸屏控制器信息的結構,供上層使用
觸摸屏設備結構體的成員與按鍵設備結構體的成員類似,也包含一個緩沖區(qū),同時包括自旋鎖、等待隊列和fasync_struct指針,如代碼清單12.12所示。
TS_DEV結構用于記錄觸摸屏">觸摸屏運行的各種狀態(tài),PenStatus包括PEN_UP、PEN_DOWN和PEN_FLEETING。buf[MAX_TS_BUF]是用來存放數據信息的事件隊列,head、tail分別指向事件隊列的頭和尾。程序中的筆事件隊列是一個環(huán)形結構,當有事件加入時,隊列頭加一,當有事件被取走時,隊列尾加一,當頭尾位置指針一致時讀取筆事件的信息,進程會被安排進入睡眠。wq等待隊列,包含一個鎖變量和一個正在睡眠進程鏈表。當有好幾個進程都在等待某件事時,Linux會把這些進程記錄到這個等待隊列。它的作用是當沒有筆觸事件發(fā)生時,阻塞上層的讀操作,直到有筆觸事件發(fā)生。lock使用自旋鎖,自旋鎖是基于共享變量來工作的,函數可以通過給某個變量設置一個特殊值來獲得鎖。而其他需要鎖的函數則會循環(huán)查詢鎖是否可用。MAX_TS_BUF的值為16,即在沒有被讀取之前,系統(tǒng)緩沖區(qū)中最多可以存放16個筆觸數據信息。
系統(tǒng)實現:ADS7843有多種轉換時序,時序規(guī)定了芯片與設備及CPU間是如何配合工作的。設計中采用16個時鐘周期啟動一次轉換的坐標轉換方式。循環(huán)過程中的每一步都在8個時鐘周期內完成,數據的處理嚴格按照時序進行,坐標的采集與X坐標類似。
2 總結
本文以三星公司內核芯片2410s和4線電阻是觸摸屏為硬件基礎。開發(fā)了觸摸屏掛圖版程序。通過軟件的濾波,通告了系統(tǒng)性能,得到了很好的處理結果,有很強的實用性。軟件使用了c語言實現,可以方便的移植到其他操做系統(tǒng)。
通訊作者
王魯云(1959-),漢族,遼寧省大連市人,本科,大連理工大學城市學院,電子與自動化學院,教授,研究方向:航運雷達系統(tǒng)。