Ich teste eine App, um die Benutzer wissen zu lassen, wann sie ihren Laptop anstecken und ausstecken müssen, um das meiste aus ihrer Laptopbatterie herauszuholen. Außerdem versuche ich den Tooltip vom Windows Power Meter zu replizieren.Wie berechnet Windows die verbleibende Zeit im Akkubetrieb?
Es ist bisher ziemlich erfolgreich mit ein paar Unterschieden.
- Die Windows-Zeit verbleibende Benachrichtigung, z. "X hr XX min (XX%) verbleibend", erscheint erst nach etwa einer Minute.
- Die restliche Windows-Zeit scheint stabiler unter wechselnder Batterie lädt
Diese führt mich zu denken, dass die Windows-Zeit in den letzten Minuten verbleibenden Algorithmus oder so ist mit durchschnittlich aber ich jede Dokumentation, dass nicht finden kann. Weiß jemand genau, was es tut, damit ich es reproduzieren kann?
Hier ist meine Implementierung (in Python, aber die Frage ist sprachunabhängig). Ich denke, ich muss die neuesten x
Entladungsraten von der Abfrage alle y
Sekunden, aber müssen die Werte für x
und y
kennen.
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)
Nur eine Klarstellung - verwenden Sie [irgendeine dieser Funktionen] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa373163%28v=vs.85%29.aspx) irgendwo ? – admdrew
Es ist natürlich eine Schätzung. Es hat keine Zeitmaschine, um zu wissen, dass Sie anfangen werden, ein Spiel zu spielen und schnell Ihre Batterie zu entleeren. –
@admdrew Ich verwende 'wmi', ein Python-Paket, das vermutlich diese Funktionen auf einer bestimmten Ebene wickelt. Ich bin nach der Umsetzung von [dieser Antwort] (http://stackoverflow.com/a/16380996/1706564). –