【发布时间】:2017-02-02 04:04:23
【问题描述】:
我正在测试一个应用程序,让用户知道何时插入和拔出笔记本电脑,以最大限度地利用笔记本电脑的电池。除此之外,我正在尝试从 Windows 功率计复制工具提示。
到目前为止,它相当成功,但有一些不同之处。
- Windows 剩余时间通知,例如“剩余 X 小时 XX 分钟 (XX%)”,大约一分钟后才会显示。
- 在不断变化的电池负载下,Windows 剩余时间似乎更稳定
这些让我认为 Windows 剩余时间算法是过去一分钟左右的平均值,但我找不到任何文档。有谁知道它的确切作用,以便我可以重现它?
这是我的实现(在 Python 中,但问题与语言无关)。我想我需要平均每 y 秒轮询一次的最新 x 放电率,但需要知道 x 和 y 的值。
t = wmi.WMI(moniker = "//./root/wmi")
batts = t.ExecQuery('Select * from BatteryStatus where Voltage > 0')
time_left = 0
for _i, b in enumerate(batts):
time_left += float(b.RemainingCapacity) / float(b.DischargeRate)
hours = int(time_left)
mins = 60 * (time_left % 1.0)
return '%i hr %i min' % (hours, mins)
【问题讨论】:
-
只是一个澄清 - 你在某处使用any of these functions吗?
-
当然是估计。它没有时间机器来知道您将要开始玩游戏并迅速耗尽电池电量。
-
@admdrew 我正在使用
wmi,这是一个 Python 包,大概在某种程度上包装了这些函数。我正在关注this answer 的实现。 -
@HansPassant,谢谢。我正在寻找这个估计是如何做出的。有什么想法吗?
-
你知道结构吗:msdn.microsoft.com/en-us/library/windows/desktop/aa372667.aspx。它具有您可以使用的 BatteryEstimatedTime 级别。此处提供了 C 中有关如何查询此内容的示例:msdn.microsoft.com/en-us/library/windows/desktop/bb204769.aspx(需要针对 BatteryEstimatedTime 级别进行调整)
标签: windows language-agnostic batterylevel