国产福利在线高清导航大全-国产福利在线-国产福利影视-国产福利一区二区麻豆-成熟少妇大片免费看-成熟女人毛片WWW免费版在线

當前位置:首頁 > 觸控技術 > 觸摸屏論文
觸摸屏論文

嵌入式Linux系統基于MiniGUl的觸摸屏多點采集校準算法

基于MiniGUI的觸摸屏多點采集校準算法
向昱丞1,高潔2
(1.中國兵器工業第58研究所軍電部,四J|I綿陽621000;2.中國兵器工業第58研究所軍品部,四川綿陽621000)

摘要:為實現觸摸屏的精確校準,提出一種在嵌入式Linux系統下基于MiniGUl的觸摸屏多點采集校準算法.該方法利用MiniGUI定時器消息和鼠標消息,在一般校屏程序中只需采集5個基本目標點,將每個目標點的取值都細化為多個光標點運算處理。通過多點數據的采集、比較及處理,能夠較精確地校準觸摸屏。結果表明,該算法能提高取值的準確性,減少取值過程中的誤操作。

關鍵詞:嵌入式Linux系統;MiniGUI;觸摸屏多點采集

中圖分類號:TP301.6;TP311.52 文獻標志碼:A

O 引言

    觸摸屏處理的數據是點的物理坐標,通過觸摸屏控制器采集得來,而LCD顯示屏則處理像素。同時,在安裝觸摸屏的過程中,也存在一定的誤差,所以需要校準。

    嵌入式Linux是一種可以進行裁減、修改使之能在嵌入式計算機系統上運行的操作系統。具有較高的穩定性和安全性,以及具有良好的硬件支持、標準兼容性和資源豐富等特點Ilj。而MiniGUI是基于Linux實時嵌入式系統的一個輕量級圖形用戶界面支持系統,具有如下優點:節省資源,提供了完備的多窗口機制,可根據項目需求進行定制配置和編譯,獨立進程的GUI模擬器,不依賴任何操作系統及硬件平臺和可移植性好。

    由于傳統的5點校準法在通過觸摸屏取點的操作過程中,只一次性取5個目標點,很容易因為手滑、沒看清楚等原因造成取點不準確,從而影響校準精度,故提出一種基于MiniGUI的觸摸屏多點采集校準算法,以較精確地校準觸摸屏。

1 觸摸屏多點采集校準

    常用的5點校準法是先預設5個屏幕坐標點(原始點),通常5個點分別在左上、右上、右下、左下和屏幕正中,再通過觸摸屏獲取的5個目標坐標點(目標點)調用MiniGUI下特定函數對2組坐標數據進行處理,達到屏幕校準目的,校準函數為SetMouseCalibrationParameters。(觸摸屏取點時,預設的5個屏幕坐標點分別標記在屏幕上的“+”正中,每采集一個目標點,“+”變到下一個預設采點位置,并附帶操作文字提示),如圖l。

 

圖1觸摸屏取點
圖1觸摸屏取點
 

    而多點采集校準是指在5個目標點的采點過程中,對每個點都多次采集、比較,使所采集的每個點更加準確,或使誤操作對采點結果的準確度影響較小。

2 多點采集校準算法及校屏程序

    多點采集校準算法基本公式為:

圖2 多點采集屏幕校準程序流程圖
 

    式中,Pi為每一次取點的x坐標值;Pj為每一次取點的Y坐標值;為n次取點x坐標相加值;為n次取點Y坐標相加值;Px為x坐標最終值;Py為Y坐標最終值。

    利用MiniGUI消息循環機制,編寫觸摸屏多點采集校屏程序。把MiniGUI消息機制中的鼠標消息,即用戶在操作鼠標時產生的鼠標事件,投遞到相應的應用程序消息隊列中。本程序采用鼠標消息中的MSG HITTEST,如果發生鼠標事件,系統會向含有光標熱點的窗口或捕捉鼠標的窗口發送一條消息。其wParam參數即為光標熱點的x坐標,IParam參數為光標熱點的y坐標。結合MSG TIMER消息,進行循環采集多點坐標。當用戶點擊觸摸屏某一“+”,則進入MSG TIMER消息計時采集數據點,開始采集即時接觸點對應光標的x、Y坐標點。在此期間,保持接觸點按下狀態則可一直獲取接觸點即時坐標,若取點完成之前松開,則會提示重新取點。在MSG TIMER時間周期內,本稃宇設置每一次按下鼠標期間都取十個坐標點,然后取相加值的平均數。這樣,可以保證取值更加準確。多點采集程序段流程如圖2。

 

圖2 多點采集屏幕校準程序流程圖
圖2 多點采集屏幕校準程序流程圖
 

   在程序初始化時,設置左上、右上、右下、左下、中心位置5個原始點相對于640×480大小屏幕的坐標分別為(10,10)、(630,10)、(630,470)、(10,470),(320.240),存入自定義結構數組dst中,程序段如下:

case MSG——CREATE:
dst[0],x=10;dst[0].y=10;
dst[l].x=630;dst[1].y=10;
dst[2].x=630;dst[2].y=470;
dst[3].x=lO;dst[3].Y=470;
dst[4].x=320;dst[4].Y=240;

    取值完成后,把5個目標點坐標(£,只,)分別存入結構體src中。然后調用屏幕校準函數SetMouseCalibrationParameters(src,dst),即完成屏幕校準。最后,生成一個xp.txt文件,把最終目標點和原始點取值寫入該文件,程序如下:

fp=fopen(”./xp.txt”,”w+It);
if(fp==NULL)
exit(O);
fwrite(dst pts,sizeof(struct_POINT),5,fp);
fwrite(src pts,sizeof(struct—POINT),5,fp);
fclose(fp);

    在下一次進入嵌入式計算機系統時,無需再進行屏幕校準操作。在系統總程序初始化時打開xp.txt文件,讀出其中保存的原始點與目標點值,再直接調用屏幕校準函數即可。程序如下:

fp=fopen(“xp.txt”,“rb”);
i“fp>0)
fread(dst,sizeof(POINT),5,fp);
fread(src,sizeof(POINT),5,fp);
SetMouseCalibrationParameters(src,dst);
fclose(fp);

3 結束語

    結果證明,該方法可以較精確地校準觸摸屏,減小了取值過程中誤操作的可能,大大提高了取值的準確性。且界面程序中的人性化設計,使得校準操作更加方便有效。

參考文獻

【l】張斌.基于PXA270板開發Qt/Embedded的觸摸屏驅動【J】.兵工自動化,2009,28(9):82—84.
【2】劉錟.觸摸屏校準程序設計[J】.計算機世界.技術與應用.2006(13):25—27.
【3】張斌.Linux2.6.16在嵌入式模塊X—Board(GP8)上的移植(J】.兵工自動化,2009,28(10):94—96.


相關文章
精彩評論:
0  相關評論
主站蜘蛛池模板: 庆云县| 即墨市| 西乡县| 揭东县| 鄂伦春自治旗| 香格里拉县| 巢湖市| 玉环县| 微山县| 屏南县| 历史| 通山县| 河曲县| 公安县| 克拉玛依市| 北辰区| 洛浦县| 琼结县| 会泽县| 花莲市| 明光市| 米泉市| 理塘县| 嘉义县| 九龙县| 梅河口市| 临颍县| 荥阳市| 辽宁省| 汾西县| 东乌珠穆沁旗| 定南县| 北票市| 海淀区| 当雄县| 枞阳县| 门头沟区| 全南县| 喀喇| 三明市| 曲靖市|