wince6与wince5很多方面的设置都不一样,wince5是在注册表的init下面驱动触摸屏校正进程的,取消掉该项就可以消除每次开机触摸屏校正。
而wince6是通过调用ctlcpl.exe来实现校正的,但我没在注册表发现哪里调用了此文件,通过实验发现wince6开机会自动检测注册表HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH下面的CalibrationData项,如果不存在该项,则会调用触摸屏校正程序。而默认得到的NK.bin内的注册表都是没有该项的(开机校正之后才有该项)。
因此,先开机再次校正触摸屏平,然后在VS2005里调用Target\Remote Tools\Registry Editor,查看校正得到的准确CalibrationData校正值,
然后把该串数据写入解决方案内的BSP\Parameter Files\platform.reg注册表中的HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH\CalibrationData项。
但现在为止还不够,需要用记事本把platform.reg,找到下面这三行:
IF IMGNOCALIBRATION
"CalibrationData"="2016,1888 1056,864 992,2912 3040,2976 3072,896"
ENDIF IMGNOCALIBRATION
修改成
;IF IMGNOCALIBRATION
"CalibrationData"="2016,1888 1056,864 992,2912 3040,2976 3072,896"
;ENDIF IMGNOCALIBRATION
要把IMGNOCALIBRATION判断取消掉,否则,即使重新编译系统镜像后注册表仍然是没有CalibrationData数值的,就还会调用触摸屏校正。
修改完毕后,重新编译得到NK.bin烧入FLASH,开机,就再也没有触摸屏校正界面了!
结论,虽然在vs2005里打开解决方案的注册表,是可以看到CalibrationData项的,但编译后得到的NK.bin还是没有该项,原因是宏IMGNOCALIBRATION一直是FALSE的.
I.MX51的方法:
增加"CalibrationData"="524,523 796,244 796,808 252,809 258,233"
注释:; "Launch80"="touchc.exe"