基于嵌入式技術(shù)的智能儀器觸摸屏接口設(shè)計
2.2 觸摸屏的校準(zhǔn)
在儀器開發(fā)過程中,觸摸屏作為輸入設(shè)備與LCD配合使用。為了能使從觸摸屏采樣得到坐標(biāo)與屏幕的顯示坐標(biāo)對應(yīng), 還需要做一個映射, 也就是要對觸摸屏進(jìn)行校準(zhǔn)。如圖4所示, 所用的觸摸屏和液晶屏都是標(biāo)準(zhǔn)的矩形, 只要安裝合理, 可以認(rèn)為觸摸屏的X 方向坐標(biāo)只與顯示屏X 方向相關(guān), Y方向坐標(biāo)只與顯示屏的Y方向相關(guān)。假設(shè)顯示屏的分辨率是W ×H, 顯示區(qū)域的左上角對應(yīng)的觸摸屏采樣坐標(biāo)是( x1 , y1 ) ,右下角對應(yīng)的坐標(biāo)是( x2 , y2 ) , 那么觸摸屏上任意一點(diǎn)采樣坐標(biāo)( x, y) 與顯示屏坐標(biāo)( xd , yd ) 的對應(yīng)關(guān)系可以按照如下公式計算:
這樣, 在測得( x1 , y1 ) 和( x2 , y2 ) 點(diǎn)觸摸屏的采樣值后, 利用上述公式編制校準(zhǔn)函數(shù), 在觸摸屏工作的過程中, 計算出實(shí)際觸摸點(diǎn)對應(yīng)的顯示坐標(biāo),完成觸摸屏的校準(zhǔn)。
圖4 觸摸屏的校準(zhǔn)
3 觸摸屏用戶應(yīng)用程序
創(chuàng)建的Linux設(shè)備文件系統(tǒng)觸摸屏節(jié)點(diǎn)為/dev/ts.在應(yīng)用程序中, 可以像打開文件一樣用open函數(shù)打開設(shè)備文件, 然后用read ( )函數(shù)讀取由驅(qū)動傳遞到用戶空間的數(shù)據(jù)。儀器應(yīng)用程序的開發(fā)采用MiniGU I進(jìn)行, MiniGU I是由北京飛漫公司開發(fā), 可應(yīng)用于實(shí)時嵌入式系統(tǒng)中的輕量級圖形用戶界面支持系統(tǒng)。其函數(shù)接口與Windows SDK類似, 開發(fā)方便。
MiniGU I的輸入抽象層( IAL: Input Abstract Layer)提供了對觸摸屏、鼠標(biāo)等輸入設(shè)備的豐富支持, 并支持PXA255處理器平臺。只要經(jīng)過簡單的設(shè)置就可以在應(yīng)用程序中使用觸摸屏。配置安裝MiniGU I時, 使用22enable2px255bial項(xiàng), 由于在安裝MiniGU I時采用了內(nèi)嵌資源的靜態(tài)編譯方式, 所以在編譯之前, 需在MiniGU I的src / sysres/目錄下建立mgetc2pxa1c 文件,并在其中用下面語句設(shè)置系統(tǒng)參數(shù), 將觸摸屏設(shè)為輸入設(shè)備。
static char * SYSTEM_VALUES[ ] = { fbcon , PX255B , /dev/ ts , none };
MiniGU I對觸摸屏輸入的處理方式如圖5 所示。
圖5 MiniGU I中的觸摸屏輸入
MiniGU I通過觸摸屏設(shè)備驅(qū)動程序接收原始的輸入數(shù)據(jù), 把它轉(zhuǎn)換為MiniGU I抽象的觸摸屏事件和數(shù)據(jù)。
相關(guān)的底層事件處理例程把這些觸摸事件轉(zhuǎn)換為上層的觸摸消息, 放到相應(yīng)的消息隊(duì)列中。應(yīng)用程序通過消息循環(huán)獲取這些消息, 交由窗口過程處理。編制針對觸摸屏的應(yīng)用程序時, 需要做的只是在窗口接收到諸如MSG _LBUTTONDOWN 等觸屏消息時, 調(diào)用相應(yīng)的語句, 完成預(yù)期操作。
4 結(jié)論
嵌入式智能儀器觸摸屏接口增強(qiáng)了儀器系統(tǒng)的人機(jī)交互功能, 方便了操作人員的使用; 接口電路和驅(qū)動程序的模塊化方便了儀器的后續(xù)改進(jìn)和新產(chǎn)品的開發(fā), 并可根據(jù)需要移植應(yīng)用到各種不同場合。設(shè)計的觸摸屏接口已經(jīng)成功應(yīng)用在故障診斷巡檢儀器中, 其工作穩(wěn)定, 運(yùn)行可靠, 具有很好的實(shí)用價值。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論