Le premier site francophone dédié au développement Pocket PC


Comment contrôler la LED de votre Pocket PC
 
   


Les informations ayant permis l'écriture de cet article proviennent du livre de Nick Grattan et Marshall Brain 'Windows CE 3.0, Application programming", ISBN N° 0-13-025592-0.

La LED du Pocket PC

La LED fait partie des spécifications d'un Pocket PC. Elle permet généralement de notifier un événement ou encore d'indiquer que la batterie est en charge ou que le Pocket PC est branché directement sur le secteur. Un Pocket PC peut mettre en oeuvre plusieurs LEDs, mais généralement il n'y en a qu'une seule.

 

Les fonctions nécessaire ne sont pas déclarées dans le SDK

Les fonctions de gestion des LEDs sont présentent dans la librairie 'coredll.dll' mais ne sont pas déclarée dans le SDK (pourquoi, mystère et boulle de gomme ?), seul le fichier 'NLed.h' peut trahir leur présence, mais les prototypes des fonctions ne sont pas déclarés dans ce fichier.

La première chose à faire et d'inclure le fichier 'NLed.h' et de déclarer les 2 fonctions de gestion des LEDs :

#include <nled.h>
extern "C"
{
  BOOL NLedGetDeviceInfo(INT nID, PVOID pOutput);
  BOOL NLedSetDevice(INT nID, PVOID pOutput);
}

D'abord, combien de LEDs sur mon Pocket PC ?

Pour commencer, il faut savoir combien de LEDs sont présentes, sachant que la première porte le numéro zéro. Pour effectuer cette vérification, nous allons utiliser la fonction 'NLedGetDeviceInfo' :

int GetLedCount()
{
   NLED_COUNT_INFO nci;
   int wCount = 0;
           
   if(NLedGetDeviceInfo(NLED_COUNT_INFO_ID, (PVOID) &nci))
    wCount = (int) nci.cLeds; 
           
   return wCount;
           
}

En cas de problème, cette fonction retourne zéro. Elle retourne aussi zéro si le Pocket PC n'a pas de LED à gérer. 99% du temps cette fonction retourne 1.

Off, On ou Blink ?

Nous pouvons maintenant modifier l'état de notre LED. D'après le contenu du fichier 'NLed.h', la led peut prendre 3 états : off, on et blink (arrêt, marche et clignotement). Chaque état correspond à une valeur du membre 'OffOnBlink' de la structure 'NLED_SETTINGS_INFO'. Cette structure permet aussi la programmation d'autres effets mais cela n'entre pas dans le cadre de cet article, nous en reparlerons une autre fois. Nous allons donc créer une fonction qui prend comme paramètre l'état désiré de la LED, soit 0 pour éteinte (off), 1 pour marche fixe (on) et 2 pour l'effet de clignotement (blink) :

void SetLedStatus(int wLed, int wStatus)
{


  NLED_SETTINGS_INFO nsi;
           
  nsi.LedNum = (INT) wLed;
  nsi.OffOnBlink = (INT) wStatus;

  NLedSetDevice(NLED_SETTINGS_INFO_ID, &nsi);

}

Ainsi, pour allumer la LED n°1, il suffit d'écrire :

SetLedStatus(0, 1);

pour la faire clignoter :

SetLedStatus(0, 2);

et enfin pour l'éteindre :

SetLedStatus(0, 0);

 

Si vous rencontrez des problèmes avec la mise en oeuvre de ces fonction, n'hésitez pas à utiliser les forums mis à votre disposition par .

Stéphane Sibué

 

 
       
   
 
   
Copyright 2001-2004 - Tous droits réservés
 
   

iPAQ est un produit de COMPAQ.
Visual Tools est un produit de Microsoft Corporation.
Toutes les autres marques et produits présents dans ces pages sont la propriété exclusive de leurs sociétés respectives.