5. Programmation, concepts généraux
La classe YSensor
A chaque fonctionnalité d'un module Yoctopuce, correspond une classe: YTemperature pour
mesurer la température, YVoltage pour mesurer une tension, YRelay pour contrôler un relais, etc. Il
existe cependant une classe spéciale qui peut faire plus: YSensor.
Cette classe YSensor est la classe parente de tous les senseurs Yoctopuce, elle permet de contrôler
n'importe quel senseur, quel que soit son type, en donnant accès au fonctions communes à tous les
senseurs. Cette classe permet de simplifier la programmation d'applications qui utilisent beaucoup
de senseurs différents. Mieux encore, si vous programmez une application basée sur la classe
YSensor elle sera compatible avec tous les senseurs Yoctopuce, y compris ceux qui n'existent pas
encore.
Programmation
Dans l'API Yoctopuce, la priorité a été mise sur la facilité d'accès aux fonctionnalités des modules en
offrant la possibilité de faire abstraction des modules qui les implémentent. Ainsi, il est parfaitement
possible de travailler avec un ensemble de fonctionnalités sans jamais savoir exactement quel
module les héberge au niveau matériel. Cela permet de considérablement simplifier la
programmation de projets comprenant un nombre important de modules.
Du point de vue programmation, votre Yocto-PowerRelay-V2 se présente sous la forme d'un module
hébergeant un certain nombre de fonctionnalités. Dans l'API , ces fonctionnalités se présentent sous
la forme d'objets qui peuvent être retrouvés de manière indépendante, et ce de plusieurs manières.
Accès aux fonctionnalités d'un module
Accès par nom logique
Chacune des fonctionnalités peut se voir assigner un nom logique arbitraire et persistant: il restera
stocké dans la mémoire flash du module, même si ce dernier est débranché. Un objet correspondant
à une fonctionnalité Xxx munie d'un nom logique pourra ensuite être retrouvée directement à l'aide
de ce nom logique et de la méthode YXxx.FindXxx. Notez cependant qu'un nom logique doit être
unique parmi tous les modules connectés.
Accès par énumération
Vous pouvez énumérer toutes les fonctionnalités d'un même type sur l'ensemble des modules
connectés à l'aide des fonctions classiques d'énumération FirstXxx et nextXxxx disponibles dans
chacune des classes YXxx.
Accès par nom hardware
Chaque fonctionnalité d'un module dispose d'un nom hardware, assigné en usine qui ne peut être
modifié. Les fonctionnalités d'un module peuvent aussi être retrouvées directement à l'aide de ce
nom hardware et de la fonction YXxx.FindXxx de la classe correspondante.
Différence entre Find et First
Les méthodes YXxx.FindXxxx et YXxx.FirstXxxx ne fonctionnent pas exactement de la même
manière. Si aucun module n'est disponible YXxx.FirstXxxx renvoie une valeur nulle. En revanche,
même si aucun module ne correspond, YXxx.FindXxxx renverra objet valide, qui ne sera pas "online"
mais qui pourra le devenir, si le module correspondant est connecté plus tard.
Manipulation des fonctionnalités
Une fois l'objet correspondant à une fonctionnalité retrouvé, ses méthodes sont disponibles de
manière tout à fait classique. Notez que la plupart de ces sous-fonctions nécessitent que le module
hébergeant la fonctionnalité soit branché pour pouvoir être manipulées. Ce qui n'est en général
jamais garanti, puisqu'un module USB peut être débranché après le démarrage du programme de
contrôle. La méthode isOnline(), disponible dans chaque classe, vous sera alors d'un grand secours.
20
www.yoctopuce.com