新聞中心

EEPW首頁(yè) > 電源與新能源 > 設(shè)計(jì)應(yīng)用 > 基于WinCE驅(qū)動(dòng)程序的電源管理研究與設(shè)計(jì)

基于WinCE驅(qū)動(dòng)程序的電源管理研究與設(shè)計(jì)

作者: 時(shí)間:2013-06-10 來(lái)源:網(wǎng)絡(luò) 收藏

圖3 系統(tǒng)電源狀態(tài)的轉(zhuǎn)換

圖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

等待注冊(cè)表中時(shí)鐘的更新, 在注冊(cè)表的時(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)作,則無(wú)論電源插上與否背光驅(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) ;

}

注冊(cè)表的超時(shí)值決定了背光燈的工作時(shí)間。在注冊(cè)表中進(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不再難懂)


評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉