如何解决触摸屏每次开机都需要校准的问题

benbentobecow 2010-02-26 03:14:17
目前触摸屏每次开机都需要校准,按说应该第一次烧写系统的时候需要校准,以后就不需要了
请问如何解决?
目前我的想法是做一个应用程序,在注册表里进行设置,开机的时候自动启动改程序,然后在该程序中启动触摸屏校准程序,如果以前校准过就不启动,如果以前没有校准过就启动,但是这种方法是不是可行,具体如何操作就不知道了
还请各位达人指教!!
...全文
3804 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
benbentobecow 2010-04-26
  • 打赏
  • 举报
回复
呵呵,我试了一下果然起来了
多谢楼上的
同时也多些之前各位的建议,大家说的都很对。
xcydj83 2010-04-26
  • 打赏
  • 举报
回复
其实实质就是首先把
[HKEY_LOCAL_MACHINE\Init\BootVars]
"SYSTEMHIVE"="system.hv"
"Start DevMgr"=dword:1
"RegistryFlags"=dword:1 ;这个就是设置注册表每次改动后自动flush到system.hv
; "Flags"=dword:3
放到HIVE BOOT SECTION和END HIVE BOOT SECTION之间
之后呢再将
你的binfs文件系统和flash的驱动也放到放到HIVE BOOT SECTION和END HIVE BOOT SECTION之间
就可以实现
我以前就是这么做的
楼主可以试试
benbentobecow 2010-03-04
  • 打赏
  • 举报
回复
恩,按照楼上的方法试了一下果然没有实现hive类型的注册表
看来还得继续实验啊
squwal 2010-03-04
  • 打赏
  • 举报
回复
mark mark
hchjjun 2010-03-03
  • 打赏
  • 举报
回复
我也有这个问题,看能不能解决
firehood 2010-03-03
  • 打赏
  • 举报
回复
楼主你看看你系统的注册表下是否有[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH]这条注册信息。
屏幕校正后CalibrationData键值会改变,如果在重启系统后CalibrationData键值又恢复到以前的值的话说明你没有实现HIVE注册表。
wolfmvp 2010-03-02
  • 打赏
  • 举报
回复
关键是注册表的类型为HIVE REG,其它的百度+Google上有很多种解法滴…
benbentobecow 2010-03-02
  • 打赏
  • 举报
回复
仍在纠结中,希望各位帮忙看看
tcdl85 2010-03-02
  • 打赏
  • 举报
回复
学习~~~!!!
帮顶~~~!!!
benbentobecow 2010-03-01
  • 打赏
  • 举报
回复
希望各位帮忙看看,注册表哪里还不太对?
benbentobecow 2010-03-01
  • 打赏
  • 举报
回复
现在的问题是我照着网上的一些资料改了一下,还是没有效果
我想知道1.怎么样能看出来hive类型的注册表已经实现了呢
2.那个; HIVE BOOT SECTION和; END HIVE BOOT SECTION既然他们都注释掉了为何还能根据他们判断他们之间的东西属于引导hive,还有就是实现hive的同时必须还要实现binfs吗?他们之间什么关系,binfs的具体作用。
3. ;HIVE BOOT SECTION

[HKEY_LOCAL_MACHINE\Drivers\Resources\IRQ]
"Identifier"=dword:1
"Minimum"=dword:1
"Space"=dword:20
"Ranges"="1-0x20"

[HKEY_LOCAL_MACHINE\Drivers\Resources\IO]
"Identifier"=dword:2
"Minimum"=dword:0
"Space"=dword:10000
"Ranges"="0-0xFFFF"
;;;;;;;;;delete by xyj 3.1 4lines
;IF IMGHIVEREG
;[HKEY_LOCAL_MACHINE\Init\BootVars]
; "Flags"=dword:3
;ENDIF IMGHIVEREG

;;;add by xyj 3.1
[HKEY_LOCAL_MACHINE\Init\BootVars]
"SYSTEMHIVE"="system.hv"
"Start DevMgr"=dword:1
"Flags"=dword:1000 ;避免重复

; END HIVE BOOT SECTION
;-------------------------------------------------------------------------


;-------------------------------------------------------------------------
; @CESYSGEN IF CE_MODULES_DEVICE


;-------------- NAND Flash Block Device Driver ----------------------------------
; @CESYSGEN IF CE_MODULES_FSDMGR
; HIVE BOOT SECTION

IF BSP_NONANDFS !

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\NANDFLASH]
"Prefix"="DSK"
"Dll"="nandflash.dll"
"Index"=dword:1
"Order"=dword:0
"Profile"="NANDFLASH"
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
IF IMGHIVEREG
"Flags"=dword:1000
ENDIF IMGHIVEREG

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\NANDFLASH]
"PartitionDriver"="mspart.dll"
"Name"="Microsoft Flash Disk"
"AutoFormat"=dword:1
"AutoPart"=dword:1

; @CESYSGEN IF CE_MODULES_BINFS

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\NANDFLASH]
"DefaultFileSystem"="BINFS"

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\NANDFLASH\BINFS]
"MountHidden"=dword:1
"MountAsROM"=dword:1

; @CESYSGEN ENDIF CE_MODULES_BINFS

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\NANDFLASH\FATFS]
"FormatExfat"=dword:1
"DisableAutoScan"=dword:1
"CheckForFormat"=dword:1
"EnableWriteBack"=dword:1
"Folder"="NandFlash"
"MountAsRoot"=dword:1 ; for ROM-only file system. This will work only when PRJ_ENABLE_FSMOUNTASROOT=1
IF IMGHIVEREG
"MountAsBootable"=dword:1 ; for (persistent) Hive-based registry. This will work only when PRJ_ENABLE_FSREGHIVE=1
ENDIF IMGHIVEREG


[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\NANDFLASH\FATFS\Filters\CacheFilt]
"Dll"="cachefilt.dll"
"LockIOBuffers"=dword:1

ENDIF BSP_NONANDFS !


IF BSP_POCKETSTORE

;--------------------------------------------------------------------
;;; BIN File System
[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\SMFlash]
"DriverPath"="Drivers\\BlockDevice\\SMFlash"
"LoadFlags"=dword:1
"MountFlags"=dword:11
"BootPhase"=dword:0
IF IMGHIVEREG
"MountAsBootable"=dword:1
ENDIF IMGHIVEREG

[HKEY_LOCAL_MACHINE\Drivers\BlockDevice\SMFlash]
"Prefix"="DSK"
"Dll"="BIBDrv.dll"
"Order"=dword:0
"Ioctl"=dword:4
"Profile"="SMFlash"
"FriendlyName"="Samsung Flash Driver"
"MountFlags"=dword:11
"BootPhase"=dword:0
IF IMGHIVEREG
"Flags"=dword:1000
ENDIF IMGHIVEREG

; Bind BINFS to the block driver
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFlash]
"DefaultFileSystem"="BINFS"
"PartitionDriver"="mspart.dll"
"AutoMount"=dword:1
"AutoPart"=dword:1
"MountFlags"=dword:11
"Folder"="ResidentFlash"
"Name"="Samsung Flash Disk"
"BootPhase"=dword:0

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFlash\BINFS]
"MountHidden"=dword:1
"MountAsROM"=dword:1

[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\SMFlash\Filters\CacheFilt]
"Dll"="cachefilt.dll"
"LockIOBuffers"=dword:1
;-----------------------------------------------------------------------------
;;; FAT File System 1
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\FlashDisk]
"Prefix"="DSK"
"Dll"="ONDisk.dll"
"Order"=dword:1
; "Index"=dword:3
"IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
"Profile"="FlashDisk"
"BmlVolumeId"=dword:0 ; BML volume ID = 0
"BmlPartitionId"=dword:8 ; BML parition ID = PARTITION_ID_FILESYSTEM
IF IMGHIVEREG
"Flags"=dword:1000
ENDIF IMGHIVEREG

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk]
"DefaultFileSystem"="FATFS"
"PartitionDriver"="mspart.dll"
"Name"="PocketStore Disk"
"AutoMount"=dword:1
"AutoPart"=dword:1
"AutoFormat"=dword:1

[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\FlashDisk]
"DriverPath"="Drivers\\BuiltIn\\FlashDisk"
; LoadFlags 0x01 == load synchronously
"LoadFlags"=dword:1
"BootPhase"=dword:0

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk\FATFS]
"FriendlyName"="PocketStore FAT FileSystem"
"Flags"=dword:00000014 ; FATFS_ENABLE_BACKUP_FAT | FATFS_DISABLE_AUTOSCAN
"DisableAutoScan"=dword:1
"Folder"="FlashDisk"
"FormatExfat"=dword:1
"CheckForFormat"=dword:1
"EnableWriteBack"=dword:1
"MountAsRoot"=dword:1 ; for ROM-only file system
IF IMGHIVEREG
"MountAsBootable"=dword:1
ENDIF IMGHIVEREG

[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\FlashDisk\Filters\CacheFilt]
"Dll"="cachefilt.dll"
"LockIOBuffers"=dword:1

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk\FATFS\Filters\CacheFilt]
"Dll"="cachefilt.dll"
"LockIOBuffers"=dword:1

;----------------------------------------------------------------------------
;;; FAT File System 2
IF POCKETSTORE_MULTIPARTITION
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\FlashDisk1]
"Prefix"="DSK"
"Dll"="ONDisk.dll"
"Order"=dword:1
; "Index"=dword:3
"IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
"Profile"="FlashDisk1"
"BmlVolumeId"=dword:0 ; BML volume ID = 0
"BmlPartitionId"=dword:9 ; BML parition ID = PARTITION_ID_FILESYSTEM1

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk1]
"DefaultFileSystem"="FATFS"
"PartitionDriver"="mspart.dll"
"Name"="PocketStore1 Disk"
"AutoMount"=dword:1
"AutoPart"=dword:1
"AutoFormat"=dword:1

[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\FlashDisk1]
"DriverPath"="Drivers\\BuiltIn\\FlashDisk1"
; LoadFlags 0x01 == load synchronously
"LoadFlags"=dword:1
"BootPhase"=dword:0

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk1\FATFS]
"FriendlyName"="PocketStore1 FAT FileSystem"
"Flags"=dword:00000014 ; FATFS_ENABLE_BACKUP_FAT | FATFS_DISABLE_AUTOSCAN
"Folder"="FlashDisk1"
"FormatExfat"=dword:1
"CheckForFormat"=dword:1
"EnableWriteBack"=dword:1
IF IMGHIVEREG
"MountAsBootable"=dword:1
ENDIF IMGHIVEREG

[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\FlashDisk1\Filters\CacheFilt]
"Dll"="cachefilt.dll"
"LockIOBuffers"=dword:1

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk1\FATFS\Filters\CacheFilt]
"Dll"="cachefilt.dll"
"LockIOBuffers"=dword:1
ENDIF POCKETSTORE_MULTIPARTITION

ENDIF BSP_POCKETSTORE

; END HIVE BOOT SECTION
这是我的注册表位啥两段;HIVE BOOT SECTION和; END HIVE BOOT SECTION啊???
tianpeijun123 2010-02-27
  • 打赏
  • 举报
回复
引用 2 楼 gooogleman 的回复:
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH]
  "CalibrationData"="513,522 151,167 160,859 880,863 879,167 "
注册表远程读出如上,复制到platform.reg代替老的,
然后复制platform.reg到工程目录下,呵呵。打包即可,

要做好就要实现hive注册表。呵呵,以后校准一次即可。

将板与电脑通过USB相连,PB打开,板子的触摸屏要先调好,然后通过里面的菜单可以看到休整后的值是多少,更改重新编译即可
benbentobecow 2010-02-27
  • 打赏
  • 举报
回复
就是说在定制内核的时候可以选择是对象存储或者是基于hive类型的对吧
博说医械研发 2010-02-26
  • 打赏
  • 举报
回复
HIVE注册表要加组件,还要改注册表,百度,谷歌,有关HIVE注册表的文章有很多
benbentobecow 2010-02-26
  • 打赏
  • 举报
回复
引用 1 楼 veabol 的回复:
其实不需要这么复杂。
你现在每次开机都需要校准否则就不准的问题应该是校准后的数据没有保存到注册表,
可能是校准程序本身的问题,但是最可能的是你没有实现HIVE注册表,只有实现了HIVE才能实现关机保存注册表,这样校准的数据能够保存就再也不需要校准了。

另外,校准好后你看一下新的注册表的值是多少,然后把这个值写到你的platform.reg中去,这样make出来的NK触摸屏相对来讲就比较精准了(如果各板子差异不大的话)
触摸屏注册表数据位置:
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH]
  "CalibrationData"="513,522 151,167 160,859 880,863 879,167 "

请问怎么判断我用的是那种类型的注册表啊
我该如何实现hive类型的注册表呢
benbentobecow 2010-02-26
  • 打赏
  • 举报
回复
恩,开来我这个应该是没有实现hive的注册表
但是该如何实现hive注册表吗
因为这个东西我刚接触,不知道他们用的是什么类型的注册表
这个注册表的类型自己可以改吗
好改吗?
jyoshou 2010-02-26
  • 打赏
  • 举报
回复
把校准信息写入platform.reg中,然后把platform.bib中的TouchCalibration.exe那行注释掉就可以,如果OS运行起来校验信息不准,在控制面板里有“笔针”可以重新校验
congyue123 2010-02-26
  • 打赏
  • 举报
回复
你没有使用hive注册表吗?如果使用了hive注册表,校准完了触摸屏的注册表信息就会改变的,后面就不需要校准了。
也可以在你校准完,通过注册表信息得到触摸屏的坐标信息,把这个信息覆盖了你工程文件中的注册表信息,这样就不用一直校准了。
gooogleman 2010-02-26
  • 打赏
  • 举报
回复
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH]
"CalibrationData"="513,522 151,167 160,859 880,863 879,167 "
注册表远程读出如上,复制到platform.reg代替老的,
然后复制platform.reg到工程目录下,呵呵。打包即可,

要做好就要实现hive注册表。呵呵,以后校准一次即可。
博说医械研发 2010-02-26
  • 打赏
  • 举报
回复
其实不需要这么复杂。
你现在每次开机都需要校准否则就不准的问题应该是校准后的数据没有保存到注册表,
可能是校准程序本身的问题,但是最可能的是你没有实现HIVE注册表,只有实现了HIVE才能实现关机保存注册表,这样校准的数据能够保存就再也不需要校准了。

另外,校准好后你看一下新的注册表的值是多少,然后把这个值写到你的platform.reg中去,这样make出来的NK触摸屏相对来讲就比较精准了(如果各板子差异不大的话)
触摸屏注册表数据位置:
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH]
"CalibrationData"="513,522 151,167 160,859 880,863 879,167 "

19,518

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧