Недавно мой друг унаследовал старый ноутбук и недавно установил окна 7 и хочет увеличить время автономной работы. Изначально батарея длилась около 20 минут, но, позволяя батарее полностью разряжаться до перезарядки, несколько раз ему удалось увеличить срок службы примерно до часа. Мы подумали, что было бы интересно увидеть, насколько мы могли бы увеличить производительность батареи! и я подумал написать сценарий для зарядки батареи на ночь - и это может быть полезно иногда запускать на любом компьютере для поддержания здоровья батареи? Я могу получить состояние батареи, но не могу понять, как проинструктировать ноутбук игнорировать наличие линии электропитания переменного тока и использовать аккумулятор. У меня есть ощущение, что ответ есть: https://pypi.python.org/pypi/LaptopControlPanel, но я полностью на пределе своего понимания! Любая помощь будет большой.Сценарий Python для зарядки и разрядки аккумулятора для ноутбука
import ctypes
from ctypes import wintypes
class SYSTEM_POWER_STATUS(ctypes.Structure):
_fields_ = [
('ExternalPower', wintypes.BYTE),
('BatteryFlag', wintypes.BYTE),
('BatteryLifePercent', wintypes.BYTE),
('Reserved1', wintypes.BYTE),
('BatteryLifeTime', wintypes.DWORD)
]
SYSTEM_POWER_STATUS_P = ctypes.POINTER(SYSTEM_POWER_STATUS)
GetSystemPowerStatus = ctypes.windll.kernel32.GetSystemPowerStatus
GetSystemPowerStatus.argtypes = [SYSTEM_POWER_STATUS_P]
GetSystemPowerStatus.restype = wintypes.BOOL
status = SYSTEM_POWER_STATUS()
if not GetSystemPowerStatus(ctypes.pointer(status)):
raise cytpes.WinError()
print 'ExternalPower', status.ExternalPower
#print 'BatteryFlag', status.BatteryFlag
print 'BatteryLifePercent', status.BatteryLifePercent
print 'BatteryLifeTime', status.BatteryLifeTime
if status.ExternalPower == True and status.BatteryLifePercent == 100:
print 'Connected to mains and at 100% charge: Begining decharge'
# This is where I would like to force battery use. Perhaps with a while
#loop (that ticks every 60 seconds or so)
if status.BatteryLifePercent > 10 :
status.ExternalPower = 0
elif status.ExternalPower == True and status.BatteryLifePercent < 100:
print 'Connected to mains and charging up to 100%'
status.ExternalPower = 1
elif status.ExternalPower == False:
print 'Not connected to mains'
else:
print ' Unknown system status'
x = raw_input('Press ENTER to close:')
Первое, если заявление, где я хотел бы, чтобы заставить использовать батареи ... Приведенный выше код в основном украден из In Python, how can I detect whether the computer is on battery power?.
Thank-you.
Какой ноутбук? Lenovo/Thinkpads поставляются с утилитой для этого. Бьюсь об заклад, вы тоже можете найти утилиту. Проблема в том, что вы просто отключите AC, чтобы вы полностью разрядили батарею, и вы пытаетесь избежать этого? Или вы просто пытаетесь повеселиться с Python? – Levon
Я даже не знал, что вы можете использовать Python для такого рода вещей. Мне интересно, если вы когда-нибудь заработаете. –
@ Levon Это тобиша примерно с 2007 года под управлением Windows 7. Нет, проблема не в том, что касается ручного отсоединения, более того, было бы неплохо, если бы ноутбук был подключен (скажем, к ночи), и иметь возможность заряд батареи столько раз, сколько требуется. Но и да, главная причина этого - веселиться с python - как, конечно, ручные работы по отключению (он это делал). – Jonathan