触摸屏调试经验谈
???//========================================================================
??//TITLE:
??//??? 觸摸屏調(diào)試經(jīng)驗(yàn)談
??//AUTHOR:
??//??? norains
??//DATE:
??//??? Thursday 19-March-2009
??//Environment:
??//??? WINDOWS CE 5.0
??//========================================================================
??
??1.校準(zhǔn)之后依然無(wú)法正確使用
??
?? 這種情況最容易發(fā)生驅(qū)動(dòng)和硬件上的錯(cuò)位,很可能是因?yàn)轵?qū)動(dòng)對(duì)X+,X-(或Y+,Y-)的定義與硬件不一致造成。這種情況是無(wú)法通過(guò)wince的觸摸屏校準(zhǔn)程序來(lái)轉(zhuǎn)換坐標(biāo)的。唯一的方法只能在驅(qū)動(dòng)層對(duì)坐標(biāo)進(jìn)行轉(zhuǎn)換,例如:
??
??#ifdef REVERSE_X
???*x = MAX_X - *x + MIN_X;
??#endif
??
??#ifdef REVERSE_Y
???*y = MAX_Y - *y + MIN_Y;
??#endif
??
??
??2.點(diǎn)擊時(shí)會(huì)無(wú)規(guī)律飄忽不定
??
?? 該問(wèn)題一般因?yàn)殡妷翰环€(wěn),可以先查一下ADC芯片在工作時(shí),電壓是否處于一種穩(wěn)定的狀態(tài)。
??
??
??3.點(diǎn)擊時(shí)有規(guī)律的漂移
??
?? 這點(diǎn)和第二點(diǎn)不同,該點(diǎn)主要是出在軟件方面。最直觀的例子是點(diǎn)擊explorer的圖標(biāo),它會(huì)呈一定規(guī)律的移動(dòng)。這種情況一般發(fā)生于觸摸屏大小改變,比如從4.3'變成7'。問(wèn)題根源是驅(qū)動(dòng)定義的數(shù)值和實(shí)際的觸摸屏采樣值不一致造成。比如,之前4.3的MAX_X是4300,可能更換為7'后就變成了4600。
??
?? 變更觸摸屏后的數(shù)值,需要實(shí)際去測(cè)量。最簡(jiǎn)單的方式,就是通過(guò)代碼獲取數(shù)值的范圍,然后通過(guò)串口打印出來(lái),再在所獲得的數(shù)據(jù)基礎(chǔ)上進(jìn)行微調(diào)。
??
?? 例如:
??
?? int getrawdata(int * x, int * y)
?? {
???? ...
????
???? static unsigned int iMaxX = 0,iMinX = MAX_X,iMinY = MAX_X,iMaxY = 0;
????
???? ...
???
??? if(bValidate != FALSE)
??? {
???? iMaxX = iMaxX > r_x[ValidNum] ? iMaxX : r_x[ValidNum];
????iMaxY = iMaxY > r_y[ValidNum] ? iMaxY : r_y[ValidNum];
????iMinX = iMinX < r_x[ValidNum] ? iMinX : r_x[ValidNum];
????iMinY = iMinY < r_y[ValidNum] ? iMinY : r_y[ValidNum];
????RETAILMSG(TRUE,(TEXT("iMinX:%d,iMaxX:%d,iMinY:%d,iMaxY:%d/r/n"),iMinX,iMaxX,iMinY,iMaxY));
???}
???
???...
?? }
??
??
轉(zhuǎn)載于:https://www.cnblogs.com/wodeyitian/archive/2009/03/19/2460392.html
超強(qiáng)干貨來(lái)襲 云風(fēng)專(zhuān)訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
- 上一篇: ETL学习之四:SQL Server I
- 下一篇: 03-19