如何做,wince系统才能更加省电?

paul85 2010-04-07 10:07:00
我现在用的是wince600,CPU是S3C6410.为了节约用电,在非工作的时候,我想关闭一些不用的东西,但是用用到红外接收部分.所以感觉不能将系统休眠了.
全部模块工作的时候系统耗电是380mA.我把背光和WIFI关闭后,耗电180mA.感觉耗电还是太多,但是不知道还可以关闭些什么模块?求高人指点.
...全文
254 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
paul85 2010-04-14
  • 打赏
  • 举报
回复
此帖沉了,只好先结贴,再重新开贴了.
jackchen0128 2010-04-09
  • 打赏
  • 举报
回复
可參考webcast課程
《开发省电的Windows Mobile应用程序》
自己搜索一下吧
這是講座的demo代碼
http://www.cnblogs.com/upto/archive/2009/06/25/1511087.html
Taiyangchen 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yashi 的回复:]

屏是耗电大户,所以默认要把背光调到合适位置(而不是最亮),并且长时间不用的话,要把屏关掉。

当然,要做更高要求,就像楼上说的,要对所有外设,甚至CPU都要做“电源管理”。
[/Quote]

还有就是如果在和外界设备通讯时耗电也会很大的
paul85 2010-04-07
  • 打赏
  • 举报
回复
我的系统一部分支持电源管理,LCD的背光,声音,WIFI模块都可以通过SETPOWERREQURIMENT()函数来关闭,但是这样的电流还剩下180MA,有点太大了.所以我想把LCD自身设成低功耗模式,不知道如何实现?
LaiQingXiong 2010-04-07
  • 打赏
  • 举报
回复
LCD 背光,GPRS,GPS等切断电源。
yashi 2010-04-07
  • 打赏
  • 举报
回复
屏是耗电大户,所以默认要把背光调到合适位置(而不是最亮),并且长时间不用的话,要把屏关掉。

当然,要做更高要求,就像楼上说的,要对所有外设,甚至CPU都要做“电源管理”。
kyzf 2010-04-07
  • 打赏
  • 举报
回复
楼主 按照wince600的电源管理,实现对应的电源模式,

就能 很很满足你 的电源需求。


另外先好好看看这篇文章:
WinCE电源管理的实现
http://blog.pfan.cn/liyutai/41079.html

另外可以百度或GOOGLE下“WinCE电源管理的实现”
paul85 2010-04-07
  • 打赏
  • 举报
回复
主要是这些语句有用,但是不知道为什么不能关闭屏幕,而是返回错误信息2.m_err = GetLastError();
HDC ghDisplayDC =::GetDC(NULL); //取得SCREEN句柄
VIDEO_POWER_MANAGEMENT vpm;
vpm.Length = sizeof(VIDEO_POWER_MANAGEMENT);
vpm.DPMSVersion = 1;
vpm.PowerState = VideoPowerOff;
int errv = ExtEscape(ghDisplayDC,SETPOWERMANAGEMENT,sizeof(vpm)+2,(LPSTR )&vpm,0,NULL);
m_err = GetLastError();
主要是这些语句有用,但是不知道为什么不能关闭屏幕,而是m_err = GetLastError()返回错误信息2.
paul85 2010-04-07
  • 打赏
  • 举报
回复
我的代码如下
void ClcdextDlg::OnBnClickedButton1()
{
HDC ghDisplayDC =::GetDC(NULL); //取得SCREEN句柄
//this->GetDC()->GetSafeHdc(); //CreateDC(NULL,NULL,NULL,NULL);
int fQueryEsc = SETPOWERMANAGEMENT;
int rc = ExtEscape (ghDisplayDC, QUERYESCSUPPORT, sizeof (fQueryEsc), //查询是否支持SETPOWERMANAGEMENT
(LPSTR)&fQueryEsc, 0, 0);
if (rc == 0)
{
AfxMessageBox(_T("不支持SETPOWERMANAGEMENT"));
}

if(NULL == ghDisplayDC)
{
m_err = -1; //edit控件显示
UpdateData(FALSE);
}
else
{
VIDEO_POWER_MANAGEMENT vpm;
vpm.Length = sizeof(VIDEO_POWER_MANAGEMENT);
vpm.DPMSVersion = 1;
vpm.PowerState = VideoPowerOff;
int errv = ExtEscape(ghDisplayDC,SETPOWERMANAGEMENT,sizeof(vpm)+2,(LPSTR )&vpm,0,NULL);
m_err = GetLastError();
UpdateData(FALSE);
}

/* //其他模块电源控制,可正常工作,屏蔽
DevicePowerNotify(_T("WAV1:"), D4, POWER_NAME);
HWAV = SetPowerRequirement(TEXT( "WAV1:"),D4,POWER_NAME,NULL,0);
DevicePowerNotify(_T("MFC1:"), D4, POWER_NAME);
HMFC = SetPowerRequirement(TEXT( "MFC1:"),D4,POWER_NAME,NULL,0);
DevicePowerNotify(_T("GLE1:"), D4, POWER_NAME);
HGLE = SetPowerRequirement(TEXT( "GLE1:"),D4,POWER_NAME,NULL,0);
DevicePowerNotify(_T("DSK3:"), D4, POWER_NAME);
HDSK = SetPowerRequirement(TEXT( "DSK3:"),D4,POWER_NAME,NULL,0);

DevicePowerNotify(_T("IIC0:"), D4, POWER_NAME);
HDSK = SetPowerRequirement(TEXT( "IIC0:"),D4,POWER_NAME,NULL,0);
DevicePowerNotify(_T("NDS0:"), D4, POWER_NAME);
HDSK = SetPowerRequirement(TEXT( "NDS0:"),D4,POWER_NAME,NULL,0);
*/
}

执行到int errv = ExtEscape(ghDisplayDC,SETPOWERMANAGEMENT,sizeof(vpm)+2,(LPSTR )&vpm,0,NULL);
m_err = GetLastError();
的时候,返回错误信息为2,不知道该如何修改?
paul85 2010-04-07
  • 打赏
  • 举报
回复
我的意思是在不工作时,LCD就不显示任何图象,让驱动不给LCD上电.用ExtEscape()函数,总是返回错误2,或者错误6. 2是找不到指定的文件,6是句柄不可用.待会把代码贴上来让大家看看.
DAISARU 2010-04-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 paul85 的回复:]
我的系统一部分支持电源管理,LCD的背光,声音,WIFI模块都可以通过SETPOWERREQURIMENT()函数来关闭,但是这样的电流还剩下180MA,有点太大了.所以我想把LCD自身设成低功耗模式,不知道如何实现?
[/Quote]

LCD自身设成低功耗模式 是什么意思
FrankBIBI 2010-04-07
  • 打赏
  • 举报
回复
MAKR~呵呵

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧