新聞中心

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

        FL2440下觸摸屏校準

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

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

        本文引用地址:http://www.104case.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觸摸屏校

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 汉川市| 吴旗县| 阳朔县| 廉江市| 兰州市| 常熟市| 屏东县| 正镶白旗| 腾冲县| 博湖县| 汉川市| 陆河县| 梁河县| 盐池县| 清苑县| 神池县| 涞源县| 杂多县| 攀枝花市| 洛南县| 古丈县| 十堰市| 大冶市| 通榆县| 黄大仙区| 宝应县| 金沙县| 阳曲县| 宁强县| 张家港市| 通渭县| 东阳市| 石河子市| 新干县| 黔西县| 云南省| 台湾省| 苏州市| 林口县| 清徐县| 鸡泽县|