近段時(shí)間一直在做SDL方面的東西,利用五一小假,做了幾個(gè)小游戲....,在這給大家說(shuō)說(shuō)心得吧
以為做出來(lái)的東西是要在開(kāi)發(fā)板上工作的...所以也就對(duì)觸摸屏這塊下了點(diǎn)功夫... 首先就說(shuō)說(shuō)如何讓我們自己的程序也享受觸摸屏帶來(lái)的樂(lè)趣. 我用的是S3C6410開(kāi)發(fā)板,在/dev下有觸摸屏設(shè)備event1或者是event0這個(gè)是是具體情況而定的。 我們都知道在linux下,一切設(shè)備皆文件,當(dāng)我們明白了這點(diǎn)的時(shí)候,你就會(huì)發(fā)現(xiàn)問(wèn)題并不像我們想象中的那么 復(fù)雜...我們可以查看我們的觸摸屏頭文件tslib.h;這個(gè)里面有很詳細(xì)的內(nèi)容,里面有兩個(gè)結(jié)構(gòu)體是我們?cè)诔绦蛑?BR>要用到的..關(guān)于其具體介紹在我的另一篇文章中有詳細(xì)的介紹,http://3417300.blog.51cto.com/3407300/837248 感興趣的可以看看,我就不再在這里累贅了。 當(dāng)然了,我們要操作這個(gè)設(shè)備,那我們自然是要以文件方式打開(kāi)嘍.. 在tslib.h中有函數(shù)ts_open;如果成功打開(kāi)后就返回一個(gè)句柄,當(dāng)然了這是我的理解了。 進(jìn)而進(jìn)行配置,ts_config函數(shù); 剩下的工作就是我們讀取觸摸屏信息樓。自然我們會(huì)想到要 ts_read。這樣一切都搞定了,但程序在我們的開(kāi)發(fā)板上運(yùn)行以后,我們發(fā)現(xiàn)其結(jié)果并不是我們想要的。 因?yàn)槲覀儾](méi)有消抖,我們自己感覺(jué)按下了一次,但在程序中出來(lái)了很多次..這個(gè)屬正?,F(xiàn)象,可是在我們的程序中是不需要這種正?,F(xiàn)象的 ,那該怎么辦呢? 你可以自己設(shè)計(jì)一個(gè)新算法,,來(lái)獲取一個(gè)適當(dāng)?shù)念~值,我的方法是只取第一個(gè)值,將其余的值都舍棄,, 二這種辦法最好的實(shí)現(xiàn)方法就是標(biāo)記了,下面就以程序來(lái)說(shuō)明具體問(wèn)題... void *getCtrlMessage(void *junk) { int Flag = 1; ts = ts_open("/dev/event1", 0); ts_config(ts) for(;;) { if(ts_read(ts , &sample, 1)) { if((sample.pressure) && (Flag == 1)) { comparison(sample, RectArray, &virtualValue); Flag = 0; //防止處理那些由于抖動(dòng)所產(chǎn)生觸摸點(diǎn)信息 } if(sample.pressure == 0) Flag = 1; } } ts_close(ts); } 在最后的最后要提醒一點(diǎn)就是,當(dāng)程序結(jié)束以后一定要記著close喲.... |
|