Я тестирую приложение, чтобы пользователи знали, когда подключать и отключать свой ноутбук, чтобы получить максимальную отдачу от батареи своего ноутбука. Кроме того, я пытаюсь воспроизвести всплывающую подсказку с помощью измерителя мощности Windows.Как Windows рассчитывает оставшееся время на батарее?
До сих пор это довольно успешно с несколькими отличиями.
- Уведомление о времени, оставшееся до Windows, например. «X hr XX min (XX%)« осталось », не отображается до примерно минуты.
- винда оставшегося время кажется более стабильным при изменении нагрузки батареи
Это приводит меня к мысли, что время для Windows оставшегося алгоритм усреднения последней минуты или около того, но я не могу найти любую документацию об этом. Кто-нибудь знает, что он делает, чтобы воспроизвести его?
Вот моя реализация (в Python, но вопрос является агностиком). Я думаю, что мне нужно будет усреднить самые последние x
скорости разряда от опроса каждые y
секунд, но нужно знать значения для 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)
Просто пояснение - вы используете [любую из этих функций] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa373163%28v=vs.85%29.aspx) где-то ? – admdrew
Это, конечно, оценка. У него нет машины времени, чтобы знать, что вы собираетесь начать играть в игру и быстро разрядить батарею. –
@admdrew Я использую 'wmi', пакет Python, который предположительно на некотором уровне обертывает эти функции. Я выполняю реализацию из [этого ответа] (http://stackoverflow.com/a/16380996/1706564). –