野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14950|回复: 5

液晶屏校验问题

[复制链接]
发表于 2018-6-26 13:45:48 | 显示全部楼层 |阅读模式

火哥 这两天 在研究触摸屏 自己按你的程序 慢慢摸索 图上这点不是很明白
就是三点校验,为什么只用if ( CalibrationFactor.Divider == 0 ) goto Failure;这个语句
就知道校验成功没有成功呢!我尝试了一下 不一定要触摸给定的点 只要按矩形的四个角那种也可以
校验成功,有时候也会失败 上面的那个语句 我在网上查了一下 还是没看懂为什么要用它来验证校验
是否成功 望火哥指明道路
无标题.png
回复

使用道具 举报

发表于 2018-6-26 13:49:24 | 显示全部楼层
CalibrationFactor.Divider  ,这是执行xpt2046_calculate_calibrationfactor函数后的输出,函数内部有个判据的,误差大于一定的值后会把CalibrationFactor.Divider 的值赋为0,所以CalibrationFactor.Divider只是个结果,具体判断过程是由xpt2046_calculate_calibrationfactor函数决定的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-26 14:41:57 | 显示全部楼层
火哥  这个函数我看了 这边处理的地方 我看了。就是这里得到的CalibrationFactor.Divider的值 但是没有见处理数值CalibrationFactor.Divider的语句
        /* K£½ ( X0£-X2 )  ( Y1£-Y2 )£- ( X1£-X2 )  ( Y0£-Y2 ) */
        pCalibrationFactor -> Divider =  ( ( pScreenSample [ 0 ] .x - pScreenSample [ 2 ] .x ) *  ( pScreenSample [ 1 ] .y - pScreenSample [ 2 ] .y ) ) -
                                                                                         ( ( pScreenSample [ 1 ] .x - pScreenSample [ 2 ] .x ) *  ( pScreenSample [ 0 ] .y - pScreenSample [ 2 ] .y ) ) ;
       
       
        if (  pCalibrationFactor -> Divider == 0  )
                ucRet = 0;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-26 15:02:40 | 显示全部楼层
在网上找了一下 都是只有算法 但是  pCalibrationFactor -> Divider的判定范围没见
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-26 15:20:15 | 显示全部楼层
火哥 校验的是不是这段程序啊  貌似明白了一点

                usTest_x = ( ( CalibrationFactor.An * strScreenSample[3].x ) + ( CalibrationFactor.Bn * strScreenSample[3].y ) + CalibrationFactor.Cn ) / CalibrationFactor.Divider;                //è¡ò»¸öμã¼ÆËãXÖμ         
                usTest_y = ( ( CalibrationFactor.Dn * strScreenSample[3].x ) + ( CalibrationFactor.En * strScreenSample[3].y ) + CalibrationFactor.Fn ) / CalibrationFactor.Divider;    //è¡ò»¸öμã¼ÆËãYÖμ
               
                usGap_x = ( usTest_x > strCrossCoordinate[3].x ) ? ( usTest_x - strCrossCoordinate[3].x ) : ( strCrossCoordinate[3].x - usTest_x );   //êμ¼êX×ø±êóë¼ÆËã×ø±êμľø¶Ô2î
                usGap_y = ( usTest_y > strCrossCoordinate[3].y ) ? ( usTest_y - strCrossCoordinate[3].y ) : ( strCrossCoordinate[3].y - usTest_y );   //êμ¼êY×ø±êóë¼ÆËã×ø±êμľø¶Ô2î
               
    if ( ( usGap_x > 15 ) || ( usGap_y > 15 ) ) goto Failure;       //¿éòÔí¨1yDT¸ÄÕaὸöÖμμÄ′óD¡à′μ÷Õû¾«¶è   
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-26 15:46:23 | 显示全部楼层
确实是上面那一段来验证的,用第四个点,用求出的第四个点 和实际第四个点的相减 求绝对值来验证 校准是不是正确的,终于知道为什么
非要设置四个点了 ,本来还想着三个点足够了 为什么火哥非要四个点,是在下愚昧了。
火哥牛逼
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-12-6 02:53 , Processed in 0.049623 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表