日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

WINCE6.0+2443系统大概过10分钟进入sleep状态

發布時間:2025/4/16 windows 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WINCE6.0+2443系统大概过10分钟进入sleep状态 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在開發基于WINCE6.0+2443的GPS產品的時候,發現我的機器在電池供電的時候,開機之后,如果沒有其他動作,那么大概10分鐘左右,我的系統會進入sleep的狀態,后來發現我在實現電池驅動的時候把函數BatteryPDDGetStatus()下面部分注釋掉了

?memcpy(pstatus,?&gpStatus->sps,?sizeof(*pstatus));

????*pfBatteriesChangedSinceLastCall?=?gpStatus->fChanged;

????if(*pfBatteriesChangedSinceLastCall)?{

????????gpStatus->fChanged?=?FALSE; //?reset?changed?flag?if?it's?set

}

?

為什么注釋了上面這部分代碼就會出現這個問題了,我們來看看電池驅動MDD層BatteryAPIGetSystemPowerStatusEx2()的定義:

?

上圖的第117行用來判斷系統當前狀態是否有AC供電還是電池供電,目前我還沒有完全搞清楚為什么是AC供電的情況下,系統就不會進入sleep,我想是和上圖中調用的BatteryAPIStopwatch()函數有很大的關系。我后來在BatteryPDDGetStatus()函數返回之前加了下面這句:

pstatus->ACLineStatus =AC_LINE_ONLINE;

這樣即使是在電池供電的情況下(這時候,是我做了個假動作來告訴BatteryAPIGetSystemPowerStatusEx2()函數:系統一直是AC供電),這就證明了在AC供電的情況下系統不會進入sleep狀態,但到底是為什么呢?有待于后面去徹底搞清楚了,如果大家知道的,麻煩大家告知。

?

上面提到說加pstatus->ACLineStatus =AC_LINE_ONLINE;這行語句可以不讓系統進入sleep,但對于一個需要電池供電的產品來說是不能這樣解決這個問題的,因為應用程序需要根據pstatus->ACLineStatus來判斷當前是否在充電,以便告訴用戶的充電狀態。后來經過上網查資料和CSDN各位高手的指點,我在BatteryPDDGetStatus()函數返回之前加入了下面的代碼就解決了這個問題:

?

我為什么加了if(NoEnterSleepStatus?>=?50)這個判斷呢,就是不想每次調用(隔5s調用一次)BatteryPDDGetStatus()函數的時候就去執行上面的動作,只要趕在系統進入sleep之間timeout之前調用了上面的代碼就可以阻止系統進入sleep狀態。

?

在這里有個疑問,網上有很多網友說通過定時調用SystemIdleTimerReset()函數也可以阻止系統進入sleep狀態,但我在上面的位置加了下面的代碼后也無法阻止系統進入sleep狀態,很奇怪,希望知者告知,謝謝啊

?

?


?

總結

以上是生活随笔為你收集整理的WINCE6.0+2443系统大概过10分钟进入sleep状态的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。