本文摘要:WindowsCE是典型的用于电池供电的系统。
WindowsCE是典型的用于电池供电的系统。这使得准确操作系统十分关键,应用程序大多数时间都不必须注目WindowsCE设备的电源损耗,但是在某些时候,你有可能要留意这些损耗。
当用户重开了一个用于电池的WindowsCE设备,电源系统会重开PC电源,事实上,只是系统被悬挂(译者录:这里就像有些PocketPC把关闭电源放到忽SIM卡的方位,拿起SIM卡才确实关闭电源。但是,目前还包括Smartphone在内,因为硬件设备,比如CPU无法转入低功耗,所以为了省电,必须做重开应用于处理器及大部分设备供电,然后必须苏醒时,再行通过定时器或无线模块苏醒。所以不关闭电源的情况不是意味著的。
)当用户关上设备电源,设备会像PC一样重新启动,而是被苏醒,回到到与系统悬挂前一样的状态。这样造成一个应用程序在苏醒后不会像悬挂前一样运营。
事实上,应用程序显然不告诉它被悬挂,除非它具体地催促当系统悬挂时通报它。从应用程序的看作,电源管理有三种方式,查找电源状态,转变电源状态,和避免电源状态转变。
查找电源状态 要查找系统当前的电源状态,你必需调用 DWORDGetSystemPowerStatusEx2(PSYSTEM_POWER_STATUS_EX2pSystemPowerStatusEx2,DWORDdwLen,BOOLfUpdate); 函数带上了三个参数:一个指向SYSTEM_POWER_STATUS_EX2结构的指针,结构的长度,和一个布尔值,回应告诉他操作系统否应当查找电池驱动来获得最后的信息或者必要回到电池内存中的信息。系统约每5秒查找一次电池状态,因此,如果第三个差数是FALSE,获得的数据会太旧。结构SYSTEM_POWER_STATUS_EX2被定义为 typedefstruct_SYSTEM_POWER_STATUS_EX2{ BYTEACLineStatus; BYTEBatteryFlag; BYTEBatteryLifePercent; BYTEReserved1; DWORDBatteryLifeTime; DWORDBatteryFullLifeTime; BYTEReserved2; BYTEBackupBatteryFlag; BYTEBackupBatteryLifePercent; BYTEReserved3; DWORDBackupBatteryLifeTime; DWORDBackupBatteryFullLifeTime; WORDBatteryVoltage; DWORDBatteryCurrent; DWORDBatteryAverageCurrent; DWORDBatteryAverageInterval; DWORDBatterymAHourConsumed; DWORDBatteryTemperature; DWORDBackupBatteryVoltage; BYTEBatteryChemistry; }SYSTEM_POWER_STATUS_EX2; 在我叙述的这个极大的结构之前,我必需规劝你,这个结构回到的数据准确程度和电池驱动一样。
某种程度的结构被传授给电池驱动来查找它的状态。WindowsCE不检验电池驱动回到的数据。
这个函数回到来的数据依赖电池驱动,因此有所不同的系统有有所不同的变化。荐个例子,许多系统在用于AC电源时不报告准确的电源级数;另一些系统则忽略。
应用程序用于GetSystemPowerStatusEx2来自动防治和检测系统否有可能运营应用程序。 第一个区域,ACLineStatus,包括一个标志,回应系统否相连到AC电源。
如果值是AC_LINE_OFFLINE,回应系统没用于AC电源;AC_LINE_ONLINE,回应系统用于了AC电源;AC_LINE_BACKUP_POWER和AC_LINE_UNKNOWN,回应可用电源和不得而知电源。BatteryFlag区域,获取了一个总的标识,回应当前系统的电池状态,可以有以下值: BATTERY_FLAG_HIGH 电池被充满著或相似充满著。 BATTERY_FLAG_LOW 电池还有一点剩下。
BATTERY_FLAG_CRITICAL 电池电量处在一个临界状态。 BATTERY_FLAG_CHARGING 电池当前正在电池。 BATTERY_FLAG_NO_BATTERY 系统无电池 BATTERY_FLAG_UNKNOWN 电池状态不得而知 BatteryLifePercent区域包括估算的电池电量需要保持的百分比。
数值有可能是0到100之间的一个,或用255回应百分比不得而知。BatteryLifeTime区域回应电池消耗之前可以保持的秒数。如果该值无法估算,区域放入BATTERY_LIFE_UNKNOWN。
BatteryFullLifeTime区域包括几乎充满著电池必须的时间。如果该值无法估算,放入BATTERY_LIFE_UNKNOWN。留意,在许多系统中,这些值有可能无法测量。
大多数OEM厂商非常简单地在每个区域内放入BATTERY_LIFE_UNKNOWN。 接下来的第四个区域(不计算出来保有区域)反复了前面的阐释,只不过是对系统备份电池来说。因为这些值大多数无法测量,许多系统非常简单地回到unknown给这些区域。
只剩的区域描述了电池和可用电池的电力状态,因为许多系统缺乏测量这些值的能力,这些区域也被非常简单地配置文件为unknown。最后一个区域,BatteryChemistry,包括一个标志,回应系统中电池的类型。
本文来源:乐竞官方网站app下载安装-www.oakaacc.org