La méthode recommandée par la plupart des langages de programmation pour la gestion des
erreurs imprévisibles est l'utilisation d'exceptions. C'est le comportement par défaut de la librairie
Yoctopuce. Si une erreur se produit alors qu'on essaie d'accéder à un module, la librairie va lancer
une exception. Dans ce cas, de trois choses l'une:
• Si votre code attrape l'exception au vol et la gère, et tout se passe bien.
• Si votre programme tourne dans le debugger, vous pourrez relativement facilement déterminer
où le problème s'est produit, et voir le message explicatif lié à l'exception.
• Sinon... l'exception va crasher votre programme, boum!
Comme cette dernière situation n'est pas la plus souhaitable, la librairie Yoctopuce offre une autre
alternative pour la gestion des erreurs, permettant de faire un programme robuste sans devoir
attraper
les
exceptions
YAPI.DisableExceptions()
chaque fonction sont systématiquement remplacées par des valeurs de retour particulières, qui
peuvent être testées par l'appelant lorsque c'est pertinent. Le nom de la valeur de retour en cas
d'erreur pour chaque fonction est systématiquement documenté dans la référence de la librairie. Il
suit
toujours
la
même
NomDeClasse.STATE_INVALID
NomDeClasse.CURRENTVALUE_INVALID
type attendu, et ne sera pas un pointeur nul qui risquerait de faire crasher votre programme. Au pire,
si vous affichez la valeur sans la tester, elle sera hors du cadre attendu pour la valeur retournée.
Dans le cas de fonctions qui ne retournent à priori pas d'information, la valeur de retour sera
si tout va bien, et un code d'erreur différent en cas d'échec.
YAPI.SUCCESS
Quand vous travaillez sans les exceptions, il est possible d'obtenir un code d'erreur et un message
expliquant l'origine de l'erreur en le demandant à l'objet qui a retourné une erreur à l'aide des
méthodes
errType()
associées à l'exception si elles avaient été actives.
10.4. Intégration de la librairie Yoctopuce en C++
Selon vos besoins et vos préférences, vous pouvez être mené à intégrer de différentes manières la
librairie à vos projets. Cette section explique comment implémenter les différentes options.
Intégration au format source (recommandé)
L'intégration de toutes les sources de la librairie dans vos projets a plusieurs avantages:
• Elle garanti le respect des conventions de compilation de votre projet (32/64 bits, inclusion des
symboles de debug, caractères unicode ou ASCII, etc.);
• Elle facilite le déboggage si vous cherchez la cause d'un problème lié à la librairie Yoctopuce
• Elle réduit les dépendances sur des composants tiers, par exemple pour parer au cas où vous
pourriez être mené à recompiler ce projet pour une architecture différente dans de
nombreuses années.
• Elle ne requiert pas l'installation d'une librairie dynamique spécifique à Yoctopuce sur le
système final, tout est dans l'exécutable.
Pour intégrer le code source, le plus simple est d'inclure simplement le répertoire
librairie Yoctopuce à votre IncludePath, et d'ajouter tous les fichiers de ce répertoire (y compris le
sous-répertoire
yapi
Pour que votre projet se construise ensuite correctement, il faudra linker avec votre projet les
librairies systèmes requises, à savoir:
• Pour Windows: les librairies sont mises automatiquement
• Pour Mac OS X: IOKit.framework et CoreFoundation.framework
• Pour Linux: libm, libpthread, libusb1.0 et libstdc++
www.yoctopuce.com
à
chaque
pour commuter la librairie dans un mode où les exceptions de
logique:
une
, une méthode
et
errMessage()
) à votre projet.
ligne
de
code.
Il
méthode
get_state()
get_currentValue
, etc. Dans tous les cas, la valeur retournée sera du
. Ce sont les même informations qui auraient été
10. Utilisation du Yocto-I2C en C++
suffit
d'appeler
la
retournera
une
retournera une valeur
Sources
fonction
valeur
de la
67