2009-09-16 9 views
9

Lo que quería hacer es tomar un registro de porcentaje de batería. Sé que el equivalente en Linux es sysctl (hw.acpi.battery.life). Sin embargo, cuando revisé el hombre de sysctl en mac os x no encontré el código equivalente para encontrarlo. ¿Puede alguien señalar cómo hacer esto usando el objetivo c. Puedo llamar a sysctlbyname pero eso no tiene esto como entrada en su estructura. Amablemente ayúdeme por favor¿Cómo obtener la duración de la batería de mac os x macbooks programáticamente?

+0

Quizás intente agregar una etiqueta "objetivo-c". Todavía no tengo el representante para editar, lamentablemente. –

+0

Posible duplicado de [Estado de la batería en OSX?] (Http://stackoverflow.com/questions/272552/battery-status-in-osx) –

Respuesta

19

Pruebe usar IOKit y las funciones IOPowerSources. Puede usar IOPSCopyPowerSourcesInfo() para obtener un blob y IOPSCopyPowerSourcesList() para extraer un CFArray de eso, enumerando las fuentes de alimentación. Finalmente puede usar el IOPSGetPowerSourceDescription() para tomar el diccionario.

Si puede utilizar la línea de comandos, puede utilizar el comando pmset

así:

$ pmset -g 
+1

+1 en IOPowerSources –

+4

más específicamente 'pmset -g batt' show's the battery percentage y estado. – DebugXYZ

+0

@Dominic la mayoría de los enlaces en su publicación están muertos. –

3

se puede utilizar ioreg en la línea de comandos también. Por ejemplo:

ioreg -l -w0 |grep CurrentCapacity 

le da el estado actual de la batería, que puede compararse a la capacidad máxima:

ioreg -l -w0 |grep MaxCapacity 
0

Otra manera de conseguir algo más de información sobre el estado de la batería es utilizar NSTask para ejecutar la Mandato system_profiler con SPPowerDataType como argumento. En mi Mac, me da los siguientes resultados:

información de la batería:

Model Information: 
     Serial Number: W01396THJD3LA 
     Manufacturer: SMP 
     Device Name: bq20z451 
     Pack Lot Code: 0 
     PCB Lot Code: 0 
     Firmware Version: 201 
     Hardware Revision: 000a 
     Cell Revision: 165 
    Charge Information: 
     Charge Remaining (mAh): 5013 
     Fully Charged: Yes 
     Charging: No 
     Full Charge Capacity (mAh): 5086 
    Health Information: 
     Cycle Count: 72 
     Condition: Normal 
    Battery Installed: Yes 
    Amperage (mA): -300 
    Voltage (mV): 12303 

Para recuperar lo que en concreto, se puede o bien analizar las líneas adecuadas, o generar un plist con este comando:

$ system_profiler SPPowerDataType -xml> BatteryInfo.plist

Esto facilitaría la recuperación de los valores, en función de claves específicas.

Cuestiones relacionadas