TouchPanelSetCalibration未更新校准

TouchPanelSetCalibration not updating calibration

本文关键字:更新 TouchPanelSetCalibration      更新时间:2023-10-16

问题

我们的产品提供了一个校准触摸屏的向导。一个特殊的要求是,我需要验证这个向导进行的每一次新校准。验证非常简单。在校准了触摸屏之后,显示了包含4个触摸目标(按钮(的新屏幕,如果用户能够在给定的时间范围内击中每个目标,则认为校准成功。如果时间耗尽,注册表中的校准数据应恢复,触摸驱动器应在不重新启动的情况下恢复。

方法

  1. HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPTOUCHCalibrationData的备份
  2. 使用TouchCalibrate()显示Windows CE内置校准UI
  3. 如上所述显示自定义验证屏幕
  4. 如果验证失败,则恢复注册表并使用旧的校准数据调用TouchPanelSetCalibration(...)

当调用TouchPanelSetCalibration(...)时,我得到以下输出:

Maximum Allowed Error 54:
Calibration Results:
   Screen    =>    Mapped
( 240,  136) => ( 240,  130)
(  96,   54) => (  93,   57)
(  96,  218) => (  99,  218)
( 384,  218) => ( 381,  220)
( 384,   54) => ( 387,   55)
Maximum error (square of Euclidean distance in screen units) = 36

注册表被正确地恢复,考虑到输出,我假设校准数据也被正确地转发到驱动程序。

但不知何故,如果不重新启动系统,触摸校准就无法恢复。

我是否需要通过发送消息或启动事件来以某种方式发出此更改的信号?我是否需要进行任何额外的API调用?…感谢的任何帮助

谢谢。

~ Sambuca

我也在MSDN论坛上发布了这个问题。我得到的答案是:

必须调用触摸驱动程序入口点TouchPanelSetCalibration由GWES更新校准数据。从用户调用时应用程序,API将只更新申请流程。

但还有其他方法可以实现触摸校准男巫

TouchCalibrate()显示的触摸校准界面(calibrui(可以定制。基本上,您需要替换默认确认屏幕上显示您自己的实现。

有关如何克隆默认CalibUi的说明可以找到:

  • 对于MSDN中的Windows CE 5.0:http://msdn.microsoft.com/en-us/library/aa452834.aspx
  • 对于CE 6.0和Compact 7:http://guruce.com/blogpost/cloning-calibrui-in-windows-ce-60