遇到应用程序与电源管理的问题
我写了一个应用,用来在LCD中显示时间和日期,
我通过API得到WinCE系统当前的时间和日期,我把这个过程放到一个线程中,但是我却发现,系统不能进入电源管理中的D3,即类似Sleep状态,(我不是很确定是不是D3,当前现象是LCD背光关闭,但是电流消耗仍比进入真正的D3高出很多)状态,这个线程是在一个普通的消息机制线程中建立的.请教各位如何做一个能显示的时间和日期的程序,能进入D3并可被唤醒时时间日期显示不出错?各位有没有好的实现方法,或者降低电源和CPU消耗的方法?是不是要用Timer?
代码如下:
DWORD TimeDate(LPVOID lpvoid)//线程函数
{
for(;;)
{
GetTimeAndDate();//自定义获得日期的函数,主要调用API,时间数据放在全局变量中
DrawScreen();//读取全局变量,然后发送要显示的数据给LCD driver
Sleep(50000);//每50秒循环
}
return 1;
}
问题点数:100、回复次数:2Top
1 楼miaoyin(妙音)回复于 2003-11-04 11:47:54 得分 100
系统进入D3状态是这样的,当没有用户线程在可调度状态后,系统调度OEMIdle,睡眠状态是在OEMIDel中处理的。你的线程每50秒唤醒一次,一直在跑,功耗当然大。
你可以在检测到有用户输入时再更新时间,没有用户输入时自己也睡眠。
Top
2 楼nbcool(载舟之水)回复于 2003-11-04 13:15:14 得分 0
具体如何做呢?我是用等待event 的方法吗?进入休眠状态后,我需要能唤醒线程继续显示。
那event要由输入的driver创建吗?Top




