|
|
|||||
|
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);
}
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.
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
|
|||||
|
|
|||||
|
Copyright 2001-2004 - Tous droits réservés
|
|||||
|
iPAQ
est un produit de COMPAQ.
|