Wince Linux 屏幕校准
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 屏幕校准相关推荐
- wince下屏幕校准和修改介绍
以6410开发板为例. 一.确定X,Y是否镜像:在屏幕上任意拖动出一个矩形虚线框,然后随意上下左右拖动,这时看虚框是否根随触摸笔移动,如果虚线框能跟随触摸笔动,说明X+,X-,Y+,Y-四线极性是接对 ...
- 定制WinCE系统的屏幕校准界面
作者:xiaolei05 转自:http://blog.csdn.net/xiaolei05/article/details/6582203 在实际应用中,经常需要定制WinCE系统的屏幕校准界面.最 ...
- kuka机器人焊接飞溅大_库卡机器人KCP4示教器屏幕校准方法
库卡于1898年在德国奥格堡成立,是世界几家顶级工业机器人制造商之一,1973年公司研发的FAMULUS第一台工业机器人诞生.库卡机器人公司在全球拥有20 多个子公司,涵盖了美国.墨西哥.巴西.日本. ...
- linux系统 插优盘安装xvidcap,Linux屏幕录像软件xvidcap的安装方法
原创内容,转载请注明出处:https://www.myzhenai.com/thread-15675-1-1.html https://www.myzhenai.com.cn/post/1184.ht ...
- 给android增加屏幕校准
Android原始版本里是没有屏幕校准功能的,tp坐标到lcd坐标是完全按照线性关系来转换的.例如,tp坐标是(Xt ,Yt )分辨率是(Wt x Ht ),lcd坐标是(X,Y),分辨率是(W x ...
- Android屏幕校准的apk应用实现
紧跟着上一篇博文,在android内核中实现屏幕校准,这一篇博文主要做的便是将可执行文件ts_calibrate移植成android的apk应用. 现在我们已经知道,ts_calibrate就是取了触 ...
- Android屏幕校准
android原始版本里是没有屏幕校准功能的,tp坐标到lcd坐标是完全按照线性关系来转换的.例如,tp坐标是(Xt ,Yt )分辨率是(Wt x Ht ),lcd坐标是(X,Y),分辨率是(W x ...
- Android 屏幕校准程序的实现
屏幕校准程序的需求: 烧系统之后,第一次进入系统要在主界面唧Launcher界面起来之前启动屏幕校准程序.校准成功后以后开机不再启动. 在Launcher之前启动屏幕校准程序很简单,只需要在Andro ...
- android 如何使得电阻屏在第一次开机时自动叫起屏幕校准程序
Android系统中有一个Provision程序,只会在第一次开机时运行一次,它会将Settings.Secure.DEVICE_PROVISIONED的值设置为1,随后就把自己disable掉 ,那 ...
最新文章
- android:descendantFocusability用法简析
- 《A Seat at the Table》作者访谈录
- python3.7运行报错_Python 3.7 环境下运行 scrapy crawl 报错 def write(self, data, async=False)?...
- JAVA对List进行手动分页
- java. tcp. 权限,java - tcpdump的不能够写PCAP文件。没有权限 - SO中文参考 - www.soinside.com...
- tensorflow搭建神经网络
- Maven安装与配置教程
- 单片机PWM波(AT89C51、ADC0808)
- mirrorlink
- 你们让我推荐的营销管理书籍找到了!
- 关于嵌入式高端ARM核心板设计风格优缺点分析(作者:gooogleman)
- drawline java_Java代码g.drawLine(100,100,100,100)的功能是()
- 开课吧 python课视频_开课吧人工智能时代的新起跑线python爬虫小课vip
- Linux入门级操作实例--vi和vim编辑器的使用
- 7-2 地下迷宫探索
- python数据分析 | seaborn绘图学习
- 《学习opencv》第四章1,2题(第二题详解,最切题)
- 公众号多题库查题系统
- Android_多渠道打包_混淆
- Cesium实现雷达扫描效果