闡述Linux觸摸屏驅(qū)動
操作系統(tǒng)對于經(jīng)常應(yīng)用電腦的用戶非常的重要,一個好的操作系統(tǒng),能更好的節(jié)省學(xué)習(xí)的時間。本文講解Linux觸摸屏驅(qū)動開發(fā),在Linux觸摸屏驅(qū)動中,最好的范例莫過于mc68328digi.c的實現(xiàn)。本文把其中用到的結(jié)構(gòu)解析一下。
1,struct ts_pen_info
該結(jié)構(gòu)是觸摸屏的核心數(shù)據(jù)結(jié)構(gòu)。用戶程序和驅(qū)動程序的交互就是通過該數(shù)據(jù)結(jié)構(gòu)完成的。結(jié)構(gòu)體里面的x,y坐標(biāo)和狀態(tài)是gui中事件驅(qū)動的原始數(shù)據(jù)源。
2,環(huán)形隊列
gui程序通過read完成對ts_pen_info的提取。而在內(nèi)核中維護(hù)了一個環(huán)形隊列,只要隊列不為空,將立即返回數(shù)據(jù)給應(yīng)用程序。
3,中斷驅(qū)動機(jī)制
觸摸屏是輸入設(shè)備,因此使用的是中斷驅(qū)動機(jī)制。只要有觸摸事件發(fā)生,即向環(huán)形隊列里面填充一項。
4,定時器的必要性
觸摸屏的中斷處理函數(shù)必然啟動一個定時器。定時器的使用是為了檢測出Drag操作。當(dāng)按下觸摸屏一直沒有松開時,中斷只會相應(yīng)一次。這和觸發(fā)方式關(guān)系不大,不是沿觸發(fā)和電平觸發(fā)的問題。主要是觸摸屏的中斷處理函數(shù)沒有處理到松開是不會開放中斷的。在這段時間內(nèi),就是通過定時器不停的啟動,檢測觸摸屏的新坐標(biāo)的。
5,misc驅(qū)動
觸摸屏采用Misc結(jié)構(gòu)的驅(qū)動。
這5點是Linux觸摸屏驅(qū)動的核心,理解這些,閱讀和編寫自己的觸摸屏驅(qū)動都會游刃有余。希望會對你有所幫助。
【編輯推薦】