基于WinCE驅(qū)動(dòng)程序的電源管理研究與設(shè)計(jì)
圖3 系統(tǒng)電源狀態(tài)的轉(zhuǎn)換
3 背光驅(qū)動(dòng)的電源管理
3.1 LCD 背光的電源管理策略
背光驅(qū)動(dòng)啟動(dòng)一個(gè)監(jiān)視工作線程, 不停的等待3 個(gè)事件:
3.1.1 BackLightChang eEv ent
等待注冊表中時(shí)鐘的更新, 在注冊表的時(shí)鐘更新之后總是將背光燈打開。
dw Resul t = WaitForMul tipleObject s( NUM _EVENT S, g_evtSignal[ 0] , FALSE, dw Tim eout ) ;
if ( WAIT _OBJECT_0 = = dw Res ult ) {
BL_ReadRegist ry( g_BLInf o) ;
BL_On( TRUE) ;
}
3.1.2 Pow erChangedEv ent
供電電源發(fā)生變化, 例如插入了電源, 監(jiān)視線程會(huì)獲得了這個(gè)事件。如果使用電源, 可以使用m _ dw ACTimeout 值作為超時(shí)值, 否則, 使用m _ dw Batter yT imeout 值作為超時(shí)值。
if ( dw Result = = WAIT_OBJECT _0+ BL_POWERE VT) {
if ( IsACOn( ) ) {
dw Timeout = g_BLInf o. m_dw ACTim eout * 1000;
}
else {
dw Timeout = g_BLInf o. m_dw Bat t eryT imeout * 1000;
}
}
3.1.3 Pow erM anag er/ ActivityTimer / UserActivity
等待用戶輸入事件,如果用戶有按鍵動(dòng)作,則無論電源插上與否背光驅(qū)動(dòng)都打開,否則,等待超時(shí)事件的發(fā)生, 將背光驅(qū)動(dòng)關(guān)閉。
if ( dw Result = = WAIT_OBJECT _0+ 1 | | dwResult = = WAIT _OBJECT _0 + BL_BUT TONEVT )
{
if ( IsACOn( ) ) {
if ( g_BLIn fo. m_bAC Au t o) {
BL_On( TRUE) ; }
}
else {
if ( g_BLIn fo. m_bBat t eryAut o) {
BL_On( TRUE) ; }
}
}
else if ( dw Result = = WAIT_T IMEOUT ) {
BL_On( FALSE) ;
}
注冊表的超時(shí)值決定了背光燈的工作時(shí)間。在注冊表中進(jìn)行如下超時(shí)值的設(shè)置:
[ H KEY_CURRE NT_USER/ Cont rolPanel / Backlight ]
AC Timeout = dword: 3c / / 十六進(jìn)制, 十進(jìn)制為60
Bat t eryT imeout = dw ord: 1e / / 十六進(jìn)制, 十進(jìn)制為30
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論