久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > FL2440下觸摸屏校準

FL2440下觸摸屏校準

作者: 時間:2016-11-20 來源:網絡 收藏
由于FL2440自帶的文件系統中busybox命令不支持TAB自動補全,所以自己重新制作了文件系統,然后燒寫,不過過后有點問題,觸摸屏不好

使了。也沒有提示校準。下面是解決方法

本文引用地址:http://cqxgywz.com/article/201611/318859.htm

一:WINCE之校屏

WINCE的校屏參數是保存在注冊表中的。打開BSP包中的platform.reg,找到如下代碼:

  1. IFBSP_NOTOUCH!
  2. [HKEY_LOCAL_MACHINE/HARDWARE/DEVICEMAP/TOUCH]
  3. "MaxCalError"=dword:7
  4. "CalibrationData"="626,4641054,823192,813190,1081070,104"
  5. "Order"=dword:1
  6. ENDIFBSP_NOTOUCH!

這里的CalibrationData即是校屏數據。由于WINCE開機后觸摸偏移太大,根本沒法點擊進入校屏程序,有兩種方法:

方法一:如果您手上有USB鼠標,將USB鼠標插入USB的HOST接口,這時就可以通過鼠標進入校屏界面了。點開始,控制
面板,筆針。

方法二:這種方法不適合初學者,適合程序開發人員。首先同步開發板,將校屏應用程序拷到開發板某目錄,再通過
VS2005,任意打開一個應用程序,將程序入口指向拷備的應用程序,再F5,即運行了該校屏程序。詳細步驟這里就不
一一列舉了。

校完屏后,如果校正的注冊表丟失,再重燒系統后,又會出現偏移。批量生產時就更不用說了。那怎么辦呢?其實,當
您校完屏后,保存的校正數據已經保存起來了。通過remote register editer查看注冊表信息,進入如下路徑:
HKEY_LOCAL_MACHINE/HARDWARE/DEVICEMAP/TOUCH
記錄CalibrationData的數據,將platform.reg里的錯誤數據用該數據替換。注意,files目錄下的和release目錄下的
platform.reg都要修改!更改后再make一下,生成的NK,就是正確的數據了。

二:LINUX之校屏

由于飛凌開發板默認沒有校屏,但是引導linux系統后,已經進入shell界面了[QT界面],沒有校準的過程。怎么辦?通過
DNW或者超級終端,進入linux的consloe,查看/etc下有個文件pointercal,刪除該文件,reboot,系統將重啟,自動進入校準界面。這時就可以校屏了。
如果這時校屏仍然無法成功,即反復的點擊那個十字架不停,這是觸摸屏驅動的問題,“修改以下代碼:
/drivers/char/s3c2410ts.c中將static inline void s3c2410_get_XY(void)函數中的x,y值調換順序。” 具體地:

  1. staticinlinevoids3c2410_get_XY(void)
  2. {
  3. if(adc_state==0){
  4. adc_state=1;
  5. disable_ts_adc();
  6. x=__raw_readl(S3C2410_ADCDAT1)&0x3ff;//x:f04y:f0ebypht.
  7. mode_y_axis();
  8. start_adc_y();
  9. }elseif(adc_state==1){
  10. adc_state=0;
  11. disable_ts_adc();
  12. y=__raw_readl(S3C2410_ADCDAT0)&0x3ff;//y:f04x:f0ebypht.
  13. DPRINTK("PENDOWN:x:%08d,y:%08d/n",x,y);
  14. wait_up_int();
  15. tsdev.penStatus=PEN_DOWN;
  16. tsEvent();
  17. }
  18. }

改為

  1. staticinlinevoids3c2410_get_XY(void)
  2. {
  3. if(adc_state==0){
  4. adc_state=1;
  5. disable_ts_adc();
  6. y=__raw_readl(S3C2410_ADCDAT1)&0x3ff;//x:f04y:f0ebypht.
  7. mode_y_axis();
  8. start_adc_y();
  9. }elseif(adc_state==1){
  10. adc_state=0;
  11. disable_ts_adc();
  12. x=__raw_readl(S3C2410_ADCDAT0)&0x3ff;//y:f04x:f0ebypht.
  13. DPRINTK("PENDOWN:x:%08d,y:%08d/n",x,y);
  14. wait_up_int();
  15. tsdev.penStatus=PEN_DOWN;
  16. tsEvent();
  17. }
  18. }

然后重新編譯內核,燒寫內核



關鍵詞: FL2440觸摸屏校

評論


技術專區

關閉