Wince Linux 屏幕校准

news/2024/11/30 9:29:33/

  FL2440下触摸屏校准问题 收藏
没想到飞凌的开发板,默认出货的时候是没有校屏的。包括WINCE和LINUX。这里分享下校屏的经验。

一:WINCE之校屏

WINCE的校屏参数是保存在注册表中的。打开BSP包中的platform.reg,找到如下代码:

view plaincopy to clipboardprint?
IF BSP_NOTOUCH !  
[HKEY_LOCAL_MACHINE/HARDWARE/DEVICEMAP/TOUCH]  
 "MaxCalError"=dword:7  
 "CalibrationData"="626,464 1054,823 192,813 190,108 1070,104" 
   "Order"=dword:1  
ENDIF BSP_NOTOUCH ! 
IF BSP_NOTOUCH !
[HKEY_LOCAL_MACHINE/HARDWARE/DEVICEMAP/TOUCH]
 "MaxCalError"=dword:7
 "CalibrationData"="626,464 1054,823 192,813 190,108 1070,104"
   "Order"=dword:1
ENDIF BSP_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值调换顺序。” 具体地:

view plaincopy to clipboardprint?
static inline void s3c2410_get_XY(void)  
{  
if (adc_state == 0) {   
  adc_state = 1;  
  disable_ts_adc();  
  x = __raw_readl(S3C2410_ADCDAT1) & 0x3ff;//x:f04 y:f0e  by pht.  
  mode_y_axis();  
  start_adc_y();  
} else if (adc_state == 1) {   
  adc_state = 0;  
  disable_ts_adc();  
  y = __raw_readl(S3C2410_ADCDAT0) & 0x3ff;//y:f04 x:f0e  by pht.  
  DPRINTK("PEN DOWN: x: %08d, y: %08d/n", x, y);  
  wait_up_int();  
  tsdev.penStatus = PEN_DOWN;  
  tsEvent();  
}  

static inline void s3c2410_get_XY(void)
{
if (adc_state == 0) {
  adc_state = 1;
  disable_ts_adc();
  x = __raw_readl(S3C2410_ADCDAT1) & 0x3ff;//x:f04 y:f0e  by pht.
  mode_y_axis();
  start_adc_y();
} else if (adc_state == 1) {
  adc_state = 0;
  disable_ts_adc();
  y = __raw_readl(S3C2410_ADCDAT0) & 0x3ff;//y:f04 x:f0e  by pht.
  DPRINTK("PEN DOWN: x: %08d, y: %08d/n", x, y);
  wait_up_int();
  tsdev.penStatus = PEN_DOWN;
  tsEvent();
}
}

将上面的代码改为

view plaincopy to clipboardprint?
static inline void s3c2410_get_XY(void)  
{  
if (adc_state == 0) {   
  adc_state = 1;  
  disable_ts_adc();  
  y = __raw_readl(S3C2410_ADCDAT1) & 0x3ff;//x:f04 y:f0e  by pht.  
  mode_y_axis();  
  start_adc_y();  
} else if (adc_state == 1) {   
  adc_state = 0;  
  disable_ts_adc();  
  x = __raw_readl(S3C2410_ADCDAT0) & 0x3ff;//y:f04 x:f0e  by pht.  
  DPRINTK("PEN DOWN: x: %08d, y: %08d/n", x, y);  
  wait_up_int();  
  tsdev.penStatus = PEN_DOWN;  
  tsEvent();  
}  

static inline void s3c2410_get_XY(void)
{
if (adc_state == 0) {
  adc_state = 1;
  disable_ts_adc();
  y = __raw_readl(S3C2410_ADCDAT1) & 0x3ff;//x:f04 y:f0e  by pht.
  mode_y_axis();
  start_adc_y();
} else if (adc_state == 1) {
  adc_state = 0;
  disable_ts_adc();
  x = __raw_readl(S3C2410_ADCDAT0) & 0x3ff;//y:f04 x:f0e  by pht.
  DPRINTK("PEN DOWN: x: %08d, y: %08d/n", x, y);
  wait_up_int();
  tsdev.penStatus = PEN_DOWN;
  tsEvent();
}
}
编完驱动后更新kernel,重烧kernel,问题解决。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/armeasy/archive/2010/04/05/5451266.aspx


http://www.ppmy.cn/news/430961.html

相关文章

Android 屏幕校准程序的实现

屏幕校准程序的需求&#xff1a; 烧系统之后&#xff0c;第一次进入系统要在主界面唧Launcher界面起来之前启动屏幕校准程序。校准成功后以后开机不再启动。 在Launcher之前启动屏幕校准程序很简单&#xff0c;只需要在AndroidManifest.xml里配置下就可以&#xff1a; <acti…

android4.0.3校准屏幕和隐藏statusbar

frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java修改&#xff1a;&#xff08;svn chages as unified diff&#xff09; Index: PhoneWindowManager.java--- PhoneWindowManager.java (revision 2175)PhoneWindowManager.java (revision…

触摸屏幕校准的原理(一)

用过Windows Mobile手机&#xff08;例如HTC Diamond&#xff09;的用户都会做过手机触摸屏幕的校正&#xff0c;具体为什么要做&#xff0c;理所当然的认为是因为手机识别的触点位置与实际触点位置的偏差需要修正。本文搜集了一些资料用来说明原由。 [Baidu百科] 从技术原理来…

项目需求 | 真实LED屏幕箱体物理空间校准(项目经费5W)

点击进入—>3D视觉工坊学习交流群 项目需求&#xff1a;真实LED屏幕箱体物理空间校准 需求内容&#xff1a;通过图像识别方式&#xff0c;通过在屏幕上变换不同的标定图案或结构光扫描来反求摄像机的参数和两者的相对参数 精度要求&#xff1a;亚像素级 工作环境&#xff1a…

Ubuntu 屏幕颜色校准

大家都知道在windows里面可以通过显卡驱动对屏幕显示颜色进行调整&#xff0c;并且可以用系统自带的颜色校准工具进行伽马值调节。 那么问题来了&#xff0c;在Ubuntu中要怎么调节呢。 经过在网上曲折的搜索&#xff0c;暂时找到了两种调节方案 一&#xff1a;使用Ubuntu系统…

定制WinCE系统的屏幕校准界面

在实际应用中&#xff0c;经常需要定制WinCE系统的屏幕校准界面。最常见的需求就是根据系统的语言设置校准界面。要实现这个功能&#xff0c;大概有两种方法&#xff0c;一是自己实现校准程序&#xff0c;完全取代WinCE系统的校准界面&#xff0c;第二种是修改WinCE系统自带的校…

科学计算机怎么调颜色,Win7旗舰版如何进行屏幕颜色校准

屏幕上看到的颜色将会取决于计算机显屏幕、显卡设置以及外部照明等因素&#xff0c;大多数用户都使用相同的默认Win7旗舰版 颜色配置文件。而现在Win7旗舰版提供了一个显示颜色校准向导&#xff0c;可以帮助您正确设置您的亮度、对比度和色彩设置。 通过此工具你可以调整伽马、…