ce 电源 触摸屏程序如何实现

562355762   2009-12-21 14:37 楼主
用的arm9 2440
在上用evc做了个程序
现在我想实现:
1.触摸屏校准
2.设置触摸屏的背光时间
3.捕获触摸屏背光关闭(做些操作);捕获触摸屏背光亮起(做些操作)
4.arm的cpu休眠唤醒

请各位高手给些提示,说明,最好有些程序....
如有描述不清之处请指出.
谢谢

回复评论 (11)

.触摸屏校准  设计:
一般情况下,校准程序只需要校准一次即可,所获得的校准系数存储在注册表中。但是电阻式触摸屏会发生偏移,所以在过一段时间后会发现触摸屏不准了,这是正常现象,只需要重新校准就可以了。
        触摸屏校准流程如下:
        调用TouchPanelEnable函数开始屏幕采样;
        调用TouchPanelGetDeviceCaps函数请求采样点个数;
        对每个采样点,执行下面的步骤:
?        调用TouchPanelGetDeviceCaps函数获得校准坐标;
?        在返回的坐标处绘制十字准线;
?        调用TouchPanelReadCalibrationPoint函数获得校准数据。
调用TouchPanelSetCalibration函数获得校准系数。
点赞  2009-12-21 14:50
谢谢,找到段程序直接调系统的校准程序,可以了,,,
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 );        

点赞  2009-12-21 15:02
谢谢,能不能说说如何设置触摸屏的背光时间 和 事件捕获
点赞  2009-12-21 15:03
触摸屏的背光时间实现上和触摸屏本身没有关系,仅仅是一个LCD背光问题,即使没有触摸屏也一样可以且比较需要背光,详细的你可以看下背光驱动
点赞  2009-12-21 15:19
背光驱动中亮起和关闭分别是通过获取PowerManager/UserActivity_active和PowerManager/UserActivity_Inactive事件之后去设置PWM或者一些IO口的,所以你可以在处理这些事件的代码过程中加些你的需求。比如向AP发消息等。
点赞  2009-12-21 15:21
实际上我想实现,当用户一段时间不操作时(可设置时间),关闭背光,使系统进入休眠状态,当点击触摸屏时,换醒系统,打开一些线程,这样的功能应该如何实现呢?
点赞  2009-12-21 15:25
引用: 引用 6 楼 lingguang8888 的回复:
实际上我想实现,当用户一段时间不操作时(可设置时间),关闭背光,使系统进入休眠状态,当点击触摸屏时,换醒系统,打开一些线程,这样的功能应该如何实现呢?


这些都是电源管理控制与操作的。

电源管理模块实体是一个动态链接库pm.dll来实现的.可以在pb的catalog窗口中选择电源管理组件添加到os中.如下图,微软提供了2个选择(二选一).第一个代表完整功能,所有api全功能实现,第二个代表空实现(形式上提供接口,但空函数).

电源管理模块的代码结构是分层的,MDD+PDD.MDD是抽象公共库,不需要改动,PDD是平台相关,主要改动都在PDD.针对平台特性,微软提供了2种 类型PDD示例.一种是default,另外一种是pda版本的.默认的情况,使用的是default.
default版本定义了4种状态:On, UserIdle, SystemIdle, Suspend;
default版本的简单描述:UserIdle状态是描述用户在使用但没有操作,比如阅读.SystemIdle状态描述用户停止使用,但系统仍然工作,比如文件传输.

简单描述ScreenOff状态描述用户请求把屏幕背灯关闭.是用户主动关闭的情况,区别于UserIdle,UserIdle是自动 的.Unattended状态表示后台工作,用户不会对其察觉的情景,比如ActiveSync每5分钟唤醒系统同步,然后继续suspend; Resume状态描述唤醒后情景,比如唤醒后在指定时间内决定转到哪个状态,否则继续suspend.
点赞  2009-12-21 15:45
谢谢
能说下实现代码,要使用哪些函数吗?
点赞  2009-12-21 15:58
电源管理态麻烦了,哪位指教下,如何用代码设置背光时间,与检测背光状态函数,,,,

谢谢
点赞  2009-12-21 16:10
引用: 引用 9 楼 lingguang8888 的回复:
电源管理态麻烦了,哪位指教下,如何用代码设置背光时间,与检测背光状态函数,,,,

谢谢


的确ce 的电源管理几乎是最难的,特别是你需要根据自己的需求,进行定制与修改时。

给你点提示:
电源管理器被实现为一个名为PM.DLL的动态链接库而直接与DEVICE.EXE进行链接,当电源管理应用编程接口被调用时,DEVICE.EXE调用位于PM.DLL中的入口点。PM.DLL的源代码是MS提供,位于%_WINCEROOT%\PUBLIC\COMMON\OAK\DRIVERS\PM文件夹中,需要的话还可以对它进行定制修改。

在WinCE OAL中的电源管理主要由OEMIdle和OEMPowerOff两个函数实现。应该说OEMIdle实现的是处理器级的电源管理,而OEMPowerOff实现的是板级的电源管理。
在WinCE系统运行的时候,如果没有任何线程可以执行,那么内核就会调用OEMIdle函数。一般在OEMIdle中,处理器都会进入sleep模式或者idle模式,这取决于处理器本身所能支持的低功耗模式。应该说,这个时候系统中的各个设备还是正常工作的,只是处理器进入了一种低功耗模式。OEMIdle函数是OAL中必须实现的,MS 也提供了例程代码,在%_WINCEROOT%\Platform\Common\Src\Common\Timer\Idle路径下。
点赞  2009-12-21 16:19
这是什么触摸屏啊?我用的很简单啊,贴在显示器上,插上USB接口就行了~~~~

大家可以去看一下演示:点击进入
点赞  2010-3-26 22:52
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复