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

Wince Linux 屏幕校准相关推荐

  1. wince下屏幕校准和修改介绍

    以6410开发板为例. 一.确定X,Y是否镜像:在屏幕上任意拖动出一个矩形虚线框,然后随意上下左右拖动,这时看虚框是否根随触摸笔移动,如果虚线框能跟随触摸笔动,说明X+,X-,Y+,Y-四线极性是接对 ...

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

    作者:xiaolei05 转自:http://blog.csdn.net/xiaolei05/article/details/6582203 在实际应用中,经常需要定制WinCE系统的屏幕校准界面.最 ...

  3. kuka机器人焊接飞溅大_库卡机器人KCP4示教器屏幕校准方法

    库卡于1898年在德国奥格堡成立,是世界几家顶级工业机器人制造商之一,1973年公司研发的FAMULUS第一台工业机器人诞生.库卡机器人公司在全球拥有20 多个子公司,涵盖了美国.墨西哥.巴西.日本. ...

  4. linux系统 插优盘安装xvidcap,Linux屏幕录像软件xvidcap的安装方法

    原创内容,转载请注明出处:https://www.myzhenai.com/thread-15675-1-1.html https://www.myzhenai.com.cn/post/1184.ht ...

  5. 给android增加屏幕校准

    Android原始版本里是没有屏幕校准功能的,tp坐标到lcd坐标是完全按照线性关系来转换的.例如,tp坐标是(Xt ,Yt )分辨率是(Wt x Ht ),lcd坐标是(X,Y),分辨率是(W x ...

  6. Android屏幕校准的apk应用实现

    紧跟着上一篇博文,在android内核中实现屏幕校准,这一篇博文主要做的便是将可执行文件ts_calibrate移植成android的apk应用. 现在我们已经知道,ts_calibrate就是取了触 ...

  7. Android屏幕校准

    android原始版本里是没有屏幕校准功能的,tp坐标到lcd坐标是完全按照线性关系来转换的.例如,tp坐标是(Xt ,Yt )分辨率是(Wt x Ht ),lcd坐标是(X,Y),分辨率是(W x ...

  8. Android 屏幕校准程序的实现

    屏幕校准程序的需求: 烧系统之后,第一次进入系统要在主界面唧Launcher界面起来之前启动屏幕校准程序.校准成功后以后开机不再启动. 在Launcher之前启动屏幕校准程序很简单,只需要在Andro ...

  9. android 如何使得电阻屏在第一次开机时自动叫起屏幕校准程序

    Android系统中有一个Provision程序,只会在第一次开机时运行一次,它会将Settings.Secure.DEVICE_PROVISIONED的值设置为1,随后就把自己disable掉 ,那 ...

最新文章

  1. android:descendantFocusability用法简析
  2. 《A Seat at the Table》作者访谈录
  3. python3.7运行报错_Python 3.7 环境下运行 scrapy crawl 报错 def write(self, data, async=False)?...
  4. JAVA对List进行手动分页
  5. java. tcp. 权限,java - tcpdump的不能够写PCAP文件。没有权限 - SO中文参考 - www.soinside.com...
  6. tensorflow搭建神经网络
  7. Maven安装与配置教程
  8. 单片机PWM波(AT89C51、ADC0808)
  9. mirrorlink
  10. 你们让我推荐的营销管理书籍找到了!
  11. 关于嵌入式高端ARM核心板设计风格优缺点分析(作者:gooogleman)
  12. drawline java_Java代码g.drawLine(100,100,100,100)的功能是()
  13. 开课吧 python课视频_开课吧人工智能时代的新起跑线python爬虫小课vip
  14. Linux入门级操作实例--vi和vim编辑器的使用
  15. 7-2 地下迷宫探索
  16. python数据分析 | seaborn绘图学习
  17. 《学习opencv》第四章1,2题(第二题详解,最切题)
  18. 公众号多题库查题系统
  19. Android_多渠道打包_混淆
  20. Cesium实现雷达扫描效果

热门文章

  1. 人工智能学习系列教程-目录(附视频教程)
  2. orm框架有哪些_spring核心框架体系结构
  3. Mac 登录ssh服务器
  4. 笔记连载 | Day7 【半加器、全加器、16位加法器、16位减法器设计】 【原理及verilog实现、仿真】篇
  5. SV学习笔记—类型转换
  6. vue+node---使用element框架实现的前后台用户登录注册功能
  7. 第2课 认识计算机教案,第2课认识计算机教案.doc
  8. 工作量管理方法——COSMIC
  9. jdk-8u311-windows-x64.exe
  10. 报考通信考试有条件吗?要怎么样的条件才能报考通信考试?