8838|19

52

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

wince触摸屏校准 [复制链接]

wince触摸屏校准

最新回复

路过,学习了.顶一下  详情 回复 发表于 2010-2-26 17:26
点赞 关注

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
自己开发一个触摸屏校准的程序。
按msdn的提示:
Call the TouchPanelEnable function to start the screen sampling.
Call the TouchPanelGetDeviceCaps function to request the number of sampling points.
For every calibration point, perform the following steps:
Call TouchPanelGetDeviceCaps to get a calibration coordinate.
Draw a crosshair at the returned coordinate.
Call the TouchPanelReadCalibrationPoint function to get calibration data.
Call the TouchPanelSetCalibration function to calculate the calibration coefficients.
这个过程已经走完,但是好像没起作用。

我用的是480*272的触摸屏,但HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\touch下的值却是2031,2112 3220,994 3217,3206 874,3197 873,954

不知道哪位高手指点一下是怎么回事?怎么样使触摸屏校准程序生效?
 
 

回复

91

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
没人帮忙自己顶
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

4
 
这个流程很正确,这个结果也不是异常。
要想有效,还需要做如下的算法:

触摸屏校正一般取屏幕上5个点,这5个点你自己定义,在这5个点上轮流显示十字符号,要求用户点在十字的中心,这样就可以得到5组坐标及其对应的触摸屏数据。

依据这5组数据,就很容易算出该触摸屏任意的一点,对应的LCD上的一点。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

5
 
正在学习WCE编程,学习了。
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

6
 
好像在wince 系统里面可以直接进行校准哦 http://www.51c51.net/c51bbs/htm_data/7/0804/210.html
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

7
 
同意楼上,可以直接调微软自己的校准函数的.包含在pwinuser.h里.
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

8
 
mark
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

9
 
wince中可以以LoadLib的方式打开库,然后直接调用原有的触摸屏校正程序,如果你愿意,还可以把它做成exe文件,然后注册自动运行的,我们有实现的,空了帮你找找代码看,很简单的,呵呵,是朋友搞出来的
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

10
 
校准后,同步读过来,把数据写到注册表里面。这样直接写死,就不用每次去校准了!
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

11
 
对,调用系统里的屏校正程序,应该从注册表里读出来,然后你再写死,再升级Image
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

12
 
其实可以使用WinCE的算法,从驱动程序中获取校准点,然后画出来,最后通过将校准信息写入注册表。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

13
 
路过,正在写自己的触摸屏校准程序,顶起来!
 
 
 

回复

94

帖子

0

TA的资源

一粒金砂(初级)

14
 
呵呵呵.!
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

15
 
Wince 中的触摸,再你每次调用为微软提供的那个函数之后就会自动在注册表中写入一组值。
如果你的注册表是保存的话,就没有关系,不保存的话,自己每次启动的时候重写设置到注册表中。这样就可以的了。
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

16
 
校准后的值,没有FLUSH到注册表里面,看你注册表的值和你的屏完全对应不上的。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

17
 
typedef  BOOL  (WINAPI *_TouchCalibrate)();

HINSTANCE  hinstance = LoadLibrary(_T("coredll.dll"));
        if (hinstance==NULL)
        {
                MessageBox(_T("加载校准函数过程失败"),_T("错误"),MB_OK);
                return;
        }

        _TouchCalibrate TouchCalibrate=NULL;
        TouchCalibrate=(_TouchCalibrate)GetProcAddress(hinstance,L"TouchCalibrate");
        if (TouchCalibrate == NULL)
        {
                MessageBox(_T("加载校准函数失败"),_T("错误"),MB_OK);
                return;
        }
       
        TouchCalibrate ();
        FreeLibrary(hinstance );        
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

18
 
我校准后正常了,但关机重启后就又不正常了,总感觉没有写入注册表,请教各位了!
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

19
 
引用 14 楼 dadahacker 的回复:
Wince 中的触摸,再你每次调用为微软提供的那个函数之后就会自动在注册表中写入一组值。
如果你的注册表是保存的话,就没有关系,不保存的话,自己每次启动的时候重写设置到注册表中。这样就可以的了。

请问目前我的系统每次开机都需要校准,是不是说明我的注册表不能保存啊
如果我想实现不用每次开机都需要校准,我该怎么做?
 
 
 

回复

93

帖子

0

TA的资源

一粒金砂(初级)

20
 
路过,学习了.顶一下
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表