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