21. Programmation avancée
L'exemple suivant met en place un callback périodique 4 fois par minute pour la première fonction
GenericSensor disponible.
YGenericSensor
f
= YGenericSensor.FirstGenericSensor();
f.set_reportFrequency("4/m");
f.registerTimedReportCallback(periodicCallback);
Comme pour les callback de changement valeur, chaque fonction d'un module peut avoir un callback
périodique différent.
Fonction callback générique
Parfois, il est souhaitable d'utiliser la même fonction de callback pour différents types de senseurs
(par exemple pour une application de mesure générique). Ceci est possible en définissant le callback
pour un objet de classe
pourra être utilisée avec toutes les sous-classes de
). A l'intérieur du callback, on peut utiliser la méthode
YGenericSensor
l'unité physique du capteur si nécessaire pour l'affichage.
Un exemple concret
Vous trouverez un exemple concret démontrant toutes ces techniques dans la librairie de
programmation Yoctopuce de chaque langage. L'exemple se trouve dans le répertoire Examples/
Prog-EventBased.
21.2. L'enregistreur de données
Votre Yocto-milliVolt-Rx-BNC est équipé d'un enregistreur de données, aussi appelé datalogger,
capable d'enregistrer en continu les mesures effectuées par le module. La fréquence
d'enregistrement maximale est de cent fois par secondes (i.e. "100/s"), et la fréquence minimale est
de une fois par heure (i.e. "1/h"). Lorsque la fréquence supérieure ou égale à 1/s, la mesure
représente une valeur instantanée. Lorsque la fréquence est inférieure, l'enregistreur stocke non
seulement une valeur moyenne, mais aussi les valeurs minimale et maximale observées durant la
période, sur la base d'un échantillonnage effectué par le module.
Notez qu'il est inutile et contre-productive de programmer une fréquence d'enregistrement plus
élevée que la fréquence native d'échantillonnage du capteur concerné.
La mémoire flash de l'enregistreur de données permet d'enregistrer environ 500'000 mesures
instantanées, ou 125'000 mesures moyennées. Lorsque la mémoire du datalogger est saturée, les
mesures les plus anciennes sont automatiquement effacées.
Prenez garde à ne pas laisser le datalogger fonctionner inutilement à haute vitesse: le nombre
d'effacements possibles d'une mémoire flash est limité (typiquement 100'000 cycles d'écriture/
effacement). A la vitesse maximale, l'enregistreur peut consommer plus de 100 cycles par jour !
Notez aussi qu'il se sert à rien d'enregistrer des valeurs plus rapidement que la fréquence de mesure
du capteur lui-même.
Démarrage/arrêt du datalogger
Le datalogger peut être démarré à l'aide de la méthode
YDataLogger
l
= YDataLogger.FirstDataLogger();
l.set_recording(YDataLogger.RECORDING_ON);
Il est possible de faire démarrer automatiquement l'enregistrement des données dès la mise sous
tension du module.
YDataLogger
l
= YDataLogger.FirstDataLogger();
l.set_autoStart(YDataLogger.AUTOSTART_ON);
l.get_module().saveToFlash();
166
plutôt que
YSensor
YGenericSensor
// il faut sauver le réglage!
. Ainsi, la même fonction callback
(et en particulier avec
YSensor
get_unit()
.
set_recording()
pour obtenir
www.yoctopuce.com