.: HosiriS :.

Informatica e non solo

Da rete elettrica a batteria: ovvero gestire l’alimentazione del nostro notebook!

Posted by hosiris su maggio 14, 2010

Di certo, in questo post, non parlerò di alimentazione casalinga… bensì mi voglio occupare dell’alimentazione del nostro portatile e con più precisione di come sia possibile rilevare l’evento che ci indica il passaggio da alimentazione da rete elettrica ad alimentazione da batteria.
Nei sistemi *NIX lo stato della batteria è moritorato dal file /proc/acpi/battery/BAT0/state, quindi sarà sufficiente leggere sul quel file ogni tot tempo, tramite impostazione da cron, ed osservare il valore della voce “charging state”. Ho scritto una piccola utility in C che ci aiuta in questo processo:


#include "stdio.h"
#include "stdlib.h"
int main()
{
  char *stringa;
  FILE *battery;
  int end, state;
  battery=fopen("/proc/acpi/battery/BAT0/state", "r");
  if(battery == NULL)
    return 1;
  stringa=calloc(100, sizeof(char));
  if(stringa == NULL)
    return -1;
  do
  {
    end=fscanf(battery, "%s", stringa);
    if(stringa == "charged")
      state = 1;
    if(stringa == "uncharged")
      state = 0;
  }
  while(end != EOF);
  printf("\n");
  printf("Stato: %d", state);
  printf("\n");
  fclose(battery);
  return 0;
}

Spero sia di facile lettura in quanto non facciamo altro che aprire un file, leggerlo, ricercare una determinata stringa ed impostare il valore di una variabile…
Le applicazioni? Ad esempio si potrebbe aggiungere un sistema automatico di invio mail che ci avvisa del passaggio ad alimentazione da batteria.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

 
%d blogger cliccano Mi Piace per questo: