我的WINCE4.2历程(12)

本文介绍了在WinCE系统中解决触摸屏响应问题的过程,包括去除触摸屏保护膜后的初步调试,以及使用动态加载方法调用TouchCalibrate函数实现触摸屏校准。

2010-04-07

 

今天进行的主要工作:

1)阅读EBOOT中和分区以及格式化有关的代码,此部分的代码主要在以下3个位置

%WINCEROOT%\PUBLIC\COMMON\OAK\DRIVERS\ETHDBG\BLCOMMON

%WINCEROOT%\PUBLIC\COMMON\OAK\DRIVERS\ETHDBG\BOOTPART

%WINCEROOT%\PUBLIC\COMMON\OAK\DRIVERS\BLOCK\MSFLASHFMD

2)通过网络下载EBOOT.BIN也解决了,原来只需要在已经有EBOOT的情况下,在Platform Settings菜单中把Target Bin选择为EBOOT.bin再下载即可:

image

3)在去掉触摸屏表面的一层塑料膜之后,触摸屏居然有反应了。ADS7843 但是需要进行进一步的校准。

4)既然触摸屏有反应了,自然开始进行触摸屏的初次校准工作。首先尝试调用系统自带的校准功能,看PB附带的文档,调用该功能只要一个TouchCalibrate函数就可以了。一开始我打算在现有的BSP代码中加入这个函数来完成第一次校准。但是找一圈没有找到合适的地方,因为如果放在触摸屏的初始化代码中的话可能会阻塞后面的函数调用。

没办法只好采用导出目标板SDK,用EVC4写用户态程序来调用TouchCalibrate了。直接包含头文件调用TouchCalibrate的方法没有成功。正好今天看过的有篇网络资料有这样的代码,用的是动态加载的方法,于是便发扬拿来就用主义了,在此感谢原作者。

启动WINCE内置的触摸屏校准程序int WINAPI WinMain(	HINSTANCE hInstance,
					HINSTANCE hPrevInstance,
					LPTSTR    lpCmdLine,
					int       nCmdShow)
{
 	// TODO: Place code here.
	typedef BOOL (WINAPI *_TouchCalibrate)(); 
		HINSTANCE hinstance = LoadLibrary(_T("coredll.dll")); 
	if (hinstance == NULL) 
	{ 
		//AfxMessageBox (L"instance == NULL"); 
		return -1; 
	} 
	_TouchCalibrate TouchCalibrate = NULL; 
	TouchCalibrate = (_TouchCalibrate)GetProcAddress(hinstance , L"TouchCalibrate"); 
	if (TouchCalibrate == NULL) 
	{ 
		//AfxMessageBox (L"TouchCalibrate == NULL"); 
		return -1; 
	} 
	TouchCalibrate();
	FreeLibrary(hinstance );
	return 0;
}

 

5)辛苦调试板子的日子,今天起暂时告一个段落。开始写方案准备立项,呵呵。

转载于:https://www.cnblogs.com/silentmj/archive/2010/04/08/1707047.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值