Home
Manuel d`utilisation
Contents
1. 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 et errMessage Ce sont les m me informations qui auraient t associ es l exception si elles avaient t actives www yoctopuce com 37 38 www yoctopuce com 8 Utilisation du Yocto Servo en PHP PHP est tout comme Javascript un langage assez atypique lorsqu il s agit de discuter avec du hardware N anmoins utiliser PHP avec des modules Yoctopuce offre l opportunit de construire tr s facilement des sites web capables d interagir avec leur environnement physique ce qui n est pas donn tous les serveurs web Cette technique trouve une application directe dans la domotique quelques modules Yoctopuce un serveur PHP et vous pourrez interagir avec votre maison depuis n importe ou dans le monde Pour autant que vous ayez une connexion internet PHP fait lui aussi partie de ces langages qui ne vous permettront pas d acc der directement aux couches mat rielles de votre ordinateur C est pourquoi vous devrez faire tourner un hub virtuel sur la machine laquelle sont branch s les modules Pour d marrer vos essais en PHP vous allez avoir besoin d un serveur PHP 5 3 ou plus de pr f rence en local sur votre machine Si vous souhaiter utiliser celui qui se trouve ch
2. e F 15 50 15 50 O 0OS OOOOO SEE E ele Ce P E d p amp da ell E Se Mel me e 2N7002 site Se Mel TapE EJO E 2N7002 el ez Me ge ll H X89 DS Tel D e P b SE mem Geld amp 4 000 UUUUU L nnnnnnn PF S q q q q q q q ro i ET DG GL 2 50 MAX 4 5 CE U 0 6 All dimensions are in mm Toutes les dimensions sont en mm A4 3 1 Echelle Yocto Servo Index A Acc s 97 Accessoires 3 Activer 98 Alimentation 15 20 220 Android 97 98 Avanc e 109 Basic 63 Blueprint 253
3. T 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 et errMessage Ce sont les m me informations qui auraient t associ es l exception si elles avaient t actives 84 www yoctopuce com 14 Utilisation du Yocto Servo en Python Python est un langage interpr t orient objet d velopp par Guido van Rossum Il offre l avantage d tre gratuit et d tre disponible pour la plupart de plate formes tant Windows qu Unix C est un language id al pour crire des petits scripts sur un coin de table La librairie Yoctopuce est compatible avec Python 2 6 et 3 Elle fonctionne sous Windows Max OS X et Linux tant Intel qu ARM La librairie a t test e avec Python 2 6 et Python 32 Les interpr teurs Python sont disponibles sur le site de Python 1 14 1 Fichiers sources Les classes de la librairie Yoctopuce pour Python que vous utiliserez vous sont fournies au format source Copiez tout le contenu du r pertoire Sources dans le r pertoire de votre choix et ajoutez ce r pertoire la variable d environnement PYTHONPATH Si vous utilisez un IDE pour programmer en Python r f rez vous sa documentation afin le configurer de mani re ce qu il retrouve automatiquement les fichiers sources de l API 14 2 Librairie dy
4. Param tres callback la fonction appeler lorsque le temps d attente est coul Sous Microsoft Internet Explorer le callback doit tre sp cifi sous forme d une string valuer ms_timeout un entier correspondant la dur e de l attente en millisecondes arguments des arguments suppl mentaires peuvent tre fournis pour tre pass s la fonction de callback si n cessaire pas support sous Microsoft Internet Explorer Retourne YAPI_SUCCESS si l op ration se d roule sans erreur En cas d erreur d clenche une exception ou retourne un code d erreur n gatif 138 www yoctopuce com 19 R f rence de l API de haut niveau YAPI Sleep YAPI ySleep Effectue une pause dans l ex cution du programme pour une dur e sp cifi e function ySleep ms_duration errmsg function Sleep ms_duration errmsg function ySleep ms_duration amp errmsg YRETCODE ySleep unsigned ms_duration string amp errmsg YRETCODE ySleep unsigned ms_duration NSError errmsg function ySleep ms_duration integer var errmsg string integer function ySleep ByVal ms_duration As Integer ByRef errmsg As String As Integer int Sleep int ms_duration ref string errmsg int Sleep long ms_duration def Sleep ms_duration errmsg None L attente est passive c est dire qu elle n occupe pas significativement le processeur de sorte a le laisser disponible pour les autres processus fonctionnant sur
5. 106 www yoctopuce com 16 Utilisation du Yocto Servo avec Android 16 7 Gestion des erreurs Lorsque vous impl mentez un programme qui doit interagir avec des modules USB vous ne pouvez pas faire abstraction de la gestion des erreurs Il y aura forc ment une occasion o un utilisateur aura d branch le p riph rique soit avant de lancer le programme soit m me en pleine op ration La librairie Yoctopuce est pr vue pour vous aider supporter ce genre de comportements mais votre code doit n anmoins tre fait pour se comporter au mieux pour interpr ter les erreurs signal es par la librairie La mani re la plus simple de contourner le probl me est celle que nous avons employ pour les petits exemples pr c dents de ce chapitre avant d acc der un module on v rifie qu il est en ligne avec la m thode isOnline et on suppose ensuite qu il va y rester pendant la fraction de seconde n cessaire ex cuter les lignes de code suivantes Ce n est pas parfait mais a peut suffire dans certains cas Il faut toutefois tre conscient qu on ne peut pas totalement exclure une erreur se produisant apr s le isOnline qui pourrait faire planter le programme Dans l API java pour Android le traitement d erreur est impl ment au moyen d exceptions Vous devrez donc intercepter et traiter correctement ces exceptions si vous souhaitez avoir un projet fiable qui ne crashera pas des que vous d brancherez un module ww
6. yFindServo La fonction yFindServo permet de retrouver un servo en fonction du num ro de s rie de son module h te et de son nom de fonction Mais vous pouvez tout aussi bien utiliser des noms logiques que vous auriez pr alablement configur s Imaginons un module Yocto Servo avec le num ros de s rie SERVORC1 123456 que vous auriez appel MonModule et dont vous auriez nomm la fonction servo1 MaFonction les cinq appels suivants seront strictement quivalents pour autant que MaFonction ne soit d finie qu une fois pour viter toute ambigu t YServo servo yFindServo SERVORC1 123456 servol YServo servo yFindServo SERVORC1 123456 MaFonction YServo servo yFindServo MonModule servol YServo servo yFindServo MonModule MaFonction YServo servo yFindServo MaFonction yFindServo renvoie un objet que vous pouvez ensuite utiliser loisir pour contr ler le servo isOnline La m thode isOnline de l objet renvoy par yFindServo permet de savoir si le module correspondant est pr sent et en tat de marche set_position La m thode set position de l objet renvoy par yFindServo permet de d placer le plus rapidement possible le servo vers la position sp cifi e Le point milieu correspond la valeur 0 et les deux extr mit s correspondent aux valeurs 1000 et 1000 move La m thode move de l objet renvoy par yFindServo permet d effectuer le d placement vers une p
7. def GetAPIVersion La version est retourn e sous forme d une chaine de caract res au format Majeure Mineure NoBuild par exemple 1 01 5535 Pour les langages utilisant une DLL externe par exemple C VisualBasic ou Delphi la chaine contient en outre la version de la DLL au m me format par exemple 1 01 5535 1 01 5439 Si vous d sirez v rifier dans votre code que la version de la librairie est compatible avec celle que vous avez utilis durant le d veloppement v rifiez que le num ro majeur soit strictement gal et que le num ro mineur soit gal ou sup rieur Le num ro de build n est pas significatif par rapport a la compatibilit de la librairie Retourne une cha ne de caract res d crivant la version de la librairie www yoctopuce com 125 19 R f rence de l API de haut niveau YAPI GetTickCount YAPI yGetTickCount Retourne la valeur du compteur monotone de temps en millisecondes function yGetTickCount nodejs function GetTickCount function yGetTickCount u64 yGetTickCount u64 yGetTickCount function yGetTickCount u64 vo _ function yGetTickCount As Long ulong GetTickCount long GetTickCount def GetTickCount Ce compteur peut tre utilis pour calculer des d lais en rapport avec les modules Yoctopuce dont la base de temps est aussi la milliseconde Retourne un long entier contenant la valeur du compteur de millisecond
8. D tecter l arriv e et le d part des modules La gestion du hot plug est importante lorsque l on travaille avec des modules USB car t t ou tard vous serez amen brancher et d brancher un module apr s le lancement de votre programme L API a t con ue pour g rer l arriv e et le d part inopin s des modules de mani re transparente mais votre application doit en g n ral en tenir compte si elle veut viter de pr tendre utiliser un module qui a t d branch La programmation par v nements est particuli rement utile pour d tecter les branchements d branchements de modules Il est en effet plus simple de se faire signaler les branchements que de devoir lister en permanence les modules branch s pour en d duire ceux qui sont arriv s et ceux qui sont partis Pour pouvoir tre pr venu d s qu un module arrive vous avez besoin de trois morceaux de code Le callback Le callback est la fonction qui sera appel e chaque fois qu un nouveau module Yoctopuce sera branch Elle prend en param tre le module concern static void deviceArrival YModule m www yoctopuce com 109 17 Programmation avanc e Console WriteLine Nouveau module m get serialNumber L initialisation Vous devez ensuite signaler l API qu il faut appeler votre callback quand un nouveau module est branch YAPI RegisterDeviceArrivalCallback deviceArrival Notez que si des modules sont d j branch s lorsque le c
9. function get_functionld function get_functionld function get_functionid string get_functionld NSString functionld vo function get_functionld As String string get_functionld String get_functionld def get_functionld Par example relay1 Retourne une cha ne de caract res identifiant le servo ex relay1 En cas d erreur d clenche une exception ou retourne Y_FUNCTIONID INVALID 198 www yoctopuce com 19 R f rence de l API de haut niveau servo get_hardwareld YServo servo hardwareld Retourne l identifiant mat riel unique du servo au format SERTAL FUNCTIONID function get_hardwareld function get_hardwareld function get_hardwareld string get_hardwareld NSString hardwareld function get_hardwareld As String string get_hardwareld String get_hardwareld def get_hardwareld L identifiant unique est compos du num ro de s rie du module et de l identifiant mat riel du servo par example RELAYLO1 123456 relayl Retourne une cha ne de caract res identifiant le servo ex RELAYLO1 123456 relayl1 En cas d erreur d clenche une exception ou retourne Y_HARDWAREID_INVALID www yoctopuce com 199 19 R f rence de l API de haut niveau servo get_logicalName YServo servo logicalName Retourne le nom logique du servo function get_logicalName function get_logicalName function get_logicalNam
10. 127 0 0 1 catch YAPI Exception ex Sye cem out panini EE EE Eeer ee ex getLocalizedMessage System out printin Ensure that the VirtualHub application is running System exit 1 if args length 2 System out printin usage demo lt serial or logical name gt lt new logical name gt System exit 1 YModule m String newname m YModule FindModule args 0 use serial or logical name 94 www yoctopuce com 15 Utilisation du Yocto Servo en Java try newname args 1 if YAPI CheckLogicalName newname System out printin Invalid name newname System exit 1 m set_logicalName newname m saveToFlash do not forget this System ouc prantin Modulle serial miget serialiNumbex 7 System out printin name m get_logiicalName catch YAPI Exception ex System out printin Module args 0 not connected check identification and USB cable System out printiin ex getMessage System exit 1 YAPI FreeAPI Attention le nombre de cycles d criture de la m moire non volatile du module est limit Pass cette limite plus rien ne garantit que la sauvegarde des r glages se passera correctement Cette limite li e la technologie employ e par le micro processeur du module se situe aux alentour de 100000 cycles Pour r sumer vous ne pouvez employer la fonction YModule saveToFlash que 100000 fois
11. C C 71 C 49 54 Callback 44 Caract ristiques 251 CheckLogicalName YAPI 119 Commande 27 111 Commencer 24 Compatibilit 97 Concepts 17 Configuration 10 Connectique 13 Contraintes 15 Contr le 19 20 28 31 33 39 41 49 51 57 59 64 66 72 74 79 81 86 87 91 93 100 102 143 220 Courants 249 D Delphi 79 describe YDualPower 223 describe YModule 147 describe YServo 191 Description 27 DisableExceptions YAPI 120 download YModule 148 Dynamique 85 Dynamiques 113 E l ments 5 6 EnableExceptions YAPI 121 EnableUSBHost YAPI 122 Erreurs 36 47 54 61 68 76 83 89 96 107 Ev nements 109 F Fichiers 85 Filtres 44 FindDualPower YDualPower 221 FindModule YModule 145 FindServo YServo 189 FirstDualPower YDualPower 222 FirstModule YModule 146 FirstServo YServo 190 Fixation 13 Fonctions 118 FreeAPI YAPI 123 functionCount YModule 149 functionld YModule 150 functionName YModule 151 functionValue YModule 152 G get_advertisedValue YDualPower 224 get_advertisedValue YServo 192 get_beacon YModule 153 get_errorMessage YDualPower 225 get_errorMessage YModule 154 get_errorMessage YServo 193 get_errorType YDualPower 226 get_errorType YModule 155 get_errorType YServo 194 get_extVoltage YDualPower 227 get_firmwareRelease YModule 156 get_friendlyName YDualPower 228 get_friendlyName YServo 195 get_functionDescriptor YDualPower 229 get_functionDes
12. Invalid name newname End End If m set_logicalName newname m saveToFlash REM do not forget this Console Write Module serial m get_serialNumber Console Write name m get_logicalName Else Console Write not connected check identification and USB cable End If End Sub End Module Attention le nombre de cycles d criture de la m moire non volatile du module est limit Pass cette limite plus rien ne garantit que la sauvegarde des r glages se passera correctement Cette limite li e a la technologie employ e par le micro processeur du module se situe aux alentour de 100000 cycles Pour r sumer vous ne pouvez employer la fonction saveToFlash que 100000 fois au cours de la vie du module Veillez donc ne pas appeler cette fonction depuis l int rieur d une boucle Enumeration des modules Obtenir la liste des modules connect s se fait a l aide de la fonction yFirstModule qui renvoie le premier module trouv il suffit ensuite d appeler la fonction nextModule de cet objet pour trouver les modules suivants et ce tant que la r ponse n est pas un Nothing Ci dessous un petit exemple listant les module connect s Module Modulel www yoctopuce com 67 11 Utilisation du Yocto Servo en VisualBasic NET Sub Main Dim M As ymodule Dim errmsg As String REM Setup the API to use local USB devices IF yRegisterHub usb errmsg lt gt YAPI SUCCESS Then Console WriteLi
13. Sur ARM il existe deux grandes familles d executables HF Hard Float et EL EABI Little Endian Ces deux familles ne sont absolument pas compatibles entre elles La capacit d une machine ARM faire tourner des ex cutables de l une ou l autre de ces familles d pend du hardware et du syst me d exploitation Les probl mes de compatibilit entre ArmHL et ArmEL sont assez difficiles diagnostiquer souvent m me l OS se r v le incapable de distinguer un ex cutable HF d un ex cutable EL Tous les binaires Yoctopuce pour ARM sont fournis pr compil e pour ArmHF et ArmEL si vous ne savez quelle famille votre machine ARM apartient essayez simplement de lancer un ex cutable de chaque famille 250 www yoctopuce com 21 Caract ristiques Vous trouverez r sum es ci dessous les principales caract ristiques techniques de votre module Yocto Servo Largeur 20 mm Longueur 45 mm Poids 5g Connecteur USB micro B Canaux 5 Syt me d exploitation support s Windows Linux Intel ARM Mac OS X Android Drivers Fonctionne sans driver API SDK Librairie USB TCP C Objective C C VB NET Delphi Python Java Android API SDK Librairie seul TCP Javascript Node js PHP Java RoHS oui USB Vendor ID Ox24E0 USB Device ID 0x0012 Bo ter recommand YoctoBox Short Thick Black www yoctopuce com 251 21 Caract ristiques 252 www yoctopuce com 45 29 40
14. YAPI yinitAPI Initialise la librairie de programmation de Yoctopuce explicitement function yInitAPI mode errmsg node js function InitAPI mode errmsg function yInitAPI mode amp errmsg YRETCODE yInitAPI int mode string amp errmsg YRETCODE yInitAPI int mode NSError errmsg function yinitAPI mode integer var errmsg string integer _vb function yinitAPI ByVal mode As Integer ByRef errmsg As String As Integer int InitAPI int mode ref string errmsg synchronized static int InitAPI int mode def InitAPI mode errmsg None Il n est pas indispensable d appeler yInitAPTI la librairie sera automatiquement initialis e de toute mani re au premier appel yRegisterHub Lorsque cette fonctin est utilis e avec comme mode la valeur Y_DETECT_NONE il faut explicitement appeler yRegisterHub pour indiquer la librairie sur quel VirtualHub les modules sont connect s avant d essayer d y acc der Param tres mode un entier sp cifiant le type de d tection automatique de modules utiliser Les valeurs possibles sont Y_DETECT_NONE Y DETECT_ USB Y_DETECT_NET et Y_DETECT_ALL errmsg une cha ne de caract res pass e par r f rence dans laquelle sera stock un ventuel message d erreur Retourne YAPI_SUCCESS si l op ration se d roule sans erreur En cas d erreur d clenche une exception ou re
15. load_async msValidity callback context Met en cache les valeurs courantes du servo avec une dur e de validit sp cifi e servo move target ms_duration D clenche un mouvement a vitesse constante vers une position donn e servo nextServo Continue l num ration des servo commenc e l aide de yFirstServo servo registerValueCallback callback Enregistre la fonction de callback qui est appel e a chaque changement de la valeur publi e servo set_logicalName newval Modifie le nom logique du servo servo set_neutral newval Modifie la dur e de l impulsion correspondant la position neutre du servo servo set_position newval Modifie imm diatement la consigne de position du servo servo set_range newval Modifie la plage d utilisation du servo en pourcents servo set_userData data Enregistre un contexte libre dans l attribut userData de la fonction afin de le retrouver plus tard l aide de la m thode get_userData servo wait_async callback context Attend que toutes les commandes asynchrones en cours d ex cution sur le module soient termin es et appelle le callback pass en param tre www yoctopuce com 189 19 R f rence de l API de haut niveau YServo FindServo YServo yFindServo Permet de retrouver un servo d apr s un identifiant donn function yFindServo func nodejs function FindServo func function yFindServo func YServo yFindServo cons
16. servo nextServo YServo Continue l num ration des servo commenc e l aide de yFirstServo _is function nextServo node js function nextServo _ php _ function nextServo YServo nextServo YServo nextServo function nextServo TYServo function nextServo As YServo YServo nextServo YServo nextServo def nextServo Retourne un pointeur sur un objet YServo accessible en ligne ou nul 1 lorsque l num ration est termin e 212 www yoctopuce com 19 R f rence de l API de haut niveau servo registerValueCallback YServo Enregistre la fonction de callback qui est appel e chaque changement de la valeur publi e function registerValueCallback callback function registerValueCallback callback function registerValueCallback callback int register ValueCallback YServoValueCallback callback int register ValueCallback YServoValueCallback callback function registerValueCallback callback TYServoValueCallback Longint function register ValueCallback As Integer int register ValueCallback ValueCallback callback int register ValueCallback UpdateCallback callback def registerValueCallback callback Ce callback n est appel que durant l ex cution de ySleep ou yHandleEvents Cela permet a l appelant de contr ler quand les callback peuvent se produire Il est important d appeler l une de ces deux fonctions p riodiquement pour garantir que les call
17. usb errmsg servo yFindServo SERVORC1 123456 servol REM Pour g rer le hot plug on v rifie que le module est l If servo isOnline Then REM UEi lise Servo set position End If Voyons maintenant en d tail ce que font ces quelques lignes yRegisterHub La fonction yRegisterHub initialise l API de Yoctopuce en indiquant o les modules doivent tre recherch s Utilis e avec le param tre usb elle permet de travailler avec les modules connect s localement la machine Si l initialisation se passe mal cette fonction renverra une valeur diff rente de YAPI SUCCESS et retournera via le param tre errmsg un explication du probl me yFindServo La fonction yFindServo permet de retrouver un servo en fonction du num ro de s rie de son module h te et de son nom de fonction Mais vous pouvez tout aussi bien utiliser des noms logiques que vous auriez pr alablement configur s Imaginons un module Yocto Servo avec le num ros de s rie SERVORC1 123456 que vous auriez appel MonModule et dont vous auriez nomm la fonction servo1 MaFonction les cinq appels suivants seront strictement quivalents pour autant que MaFonction ne soit d finie qu une fois pour viter toute ambigu t servo yFindServo SERVORC1 123456 servol servo yFindServo SERVORC1 123456 MaFonction servo yFindServo MonModule servol servo yFindServo MonModule MaFonction servo yFindServo MaFonction yFindServo r
18. Binaries correspondant votre syst me d exploitation votre LibPath www yoctopuce com 55 9 Utilisation du Yocto Servo en C Ensuite pour que votre projet se construise ensuite correctement il faudra linker avec votre projet la librairie dynamique Yoctopuce et les librairies syst mes requises e Pour Windows yocto lib e Pour Mac OS X libyocto IOKit framework et CoreFoundation framework e Pour Linux libyocto libm libpthread libusb1 0 et libstdc Avec GCC la ligne de commande de compilation est simplement Gise aig 6 eler eg ler ere luet St eer ek 56 www yoctopuce com 10 Utilisation du Yocto Servo en Objective C Objective C est le langage de pr dilection pour programmer sous Mac OS X en raison de son int gration avec le g n rateur d interfaces Cocoa Pour pouvoir utiliser la libraire Objective C vous aurez imp rativement besoin de XCode 4 2 qui est disponible gratuitement sous Lion Si vous tes encore sous Snow Leopard il vous faudra tre enregistr comme d veloppeur aupr s d Apple pour pourvoir t l charger XCode 4 2 La librairie Yoctopuce est compatible ARC Il vous sera donc possible de coder vos projet soit en utilisant la traditionnelle m thode de retain release soit en activant l Automatic Reference Counting Les librairies Yoctopuce pour Objective C vous sont fournies au format source dans leur int gralit Une partie de la librairie de bas niveau est crite en C pur
19. En revanche les paradigmes de programmation et les possibilit s d acc s au hardware sont l g rement diff rentes par rapport au Java classique ce qui justifie un chapitre part sur la programmation Android 16 1 Acc s Natif et Virtual Hub Contrairement l API Java classique l API Java pour Android acc de aux modules USB de mani re native En revanche comme il n existe pas de VirtualHub tournant sous Android il n est pas possible de prendre le contr le distance de modules Yoctopuce pilot s par une machine sous Android Bien s r l API Java pour Android reste parfaitement capable de se connecter un VirtualHub tournant sur un autre OS 16 2 Pr paration Connectez vous sur le site de Yoctopuce et t l chargez la librairie de programmation pour Java pour Android La librairie est disponible en fichiers sources mais elle aussi disponible sous la forme d un fichier jar Branchez vos modules d compressez les fichiers de la librairie dans le r pertoire de votre choix Et configurez votre environnement de programmation Android pour qu il puisse les trouver Afin de les garder simples tous les exemples fournis dans cette documentation sont des fragments d application Android Vous devrez les int grer dans vos propres applications Android pour les faire fonctionner En revanche vous pourrez trouver des applications compl tes dans les exemples fournis avec la librairie Java pour Android 16 3 Compatibilit Dans un
20. La m thode isOnline de l objet renvoy par yFindServo permet de savoir si le module correspondant est pr sent et en tat de marche set_position La m thode set position de l objet renvoy par yFindServo permet de d placer le plus rapidement possible le servo vers la position sp cifi e Le point milieu correspond la valeur O et les deux extr mit s correspondent aux valeurs 1000 et 1000 move La m thode move de l objet renvoy par yFindServo permet d effectuer le d placement vers une position d sir e en un intervalle de temps contr l sp cifi en millisecondes 13 3 Contr le de la partie module Chaque module peut tre contr l d une mani re similaire vous trouverez ci dessous un simple programme d exemple affichant les principaux param tres d un module et permettant d activer la balise de localisation program modulecontrol SAPPTYPE CONSOLE uses EE yocto api const serial SERVORC1 123456 use serial number or logical name procedure refresh module Tymodule begin if module isOnline then begin Writeln Writeln Serial 7 modulengerEscriall Number hr Writeln Logical name module get_logicalName Writeln Luminosity intToStr module get_luminosity Write Beacon aS if module get beacon Y BEACON ON then Writeln on Ge beer ege Writeln uptime leren E ee et er PUp Time a any 00S Writeln USB current PER ae intToStr module get us
21. MonModule servol servo YServo FindServo MonModule MaFonction servo YServo FindServo MaFonction YServo FindServo renvoie un objet que vous pouvez ensuite utiliser loisir pour contr ler le servo isOnline La m thode YServo isOnline de l objet renvoy par FindServo permet de savoir si le module correspondant est pr sent et en tat de marche set_position La m thode set position de l objet renvoy par YServo FindServo permet de d placer le plus rapidement possible le servo vers la position sp cifi e Le point milieu correspond a la valeur 0 et les deux extr mit s correspondent aux valeurs 1000 et 1000 100 www yoctopuce com 16 Utilisation du Yocto Servo avec Android move La m thode move de l objet renvoy par YServo FindServo permet d effectuer le d placement vers une position d sir e en un intervalle de temps contr l sp cifi en millisecondes Un exemple r el Lancez votre environnement java et ouvrez le projet correspondant Examples Doc Examples de la librairie Yoctopuce fourni dans le r pertoire Vous reconnaitrez dans cet exemple l utilisation des fonctions expliqu es ci dessus cette fois utilis es avec le d corum n cessaire en faire un petit programme d exemple concret package com yoctopuce doc examples import android app Activity import android os Bundle import android view View import android widget AdapterView import android
22. String format Sd module getLuminosity field TextView findViewById R id uptimefield field setText module getUpTime 1000 sec field TextView findViewById R id usbcurrentfield field setText module getUsbCurrent mA Switch sw Switch findViewById R id beaconswitch Leg di swrteh oeacon module Jetsbheacont sw setChecked module getBeacon YModule BEACON_ON field TextView findViewById R id logs EE module qe ulastLogsi i catch YAPI Exception e e printStackTrace Override public void onItemSelected AdapterView lt gt parent View view int pos long id String hwid parent getltemAtPosition pos toString module YModule FindModule hwid DisplayModuleInfo Override public void onNothingSelected AdapterView lt gt arg0 public void refreshInfo View view DisplayModuleInfo www yoctopuce com 103 16 Utilisation du Yocto Servo avec Android public void toggleBeacon View view if module null EE boolean on Switch view isChecked CEV Lf on ey module setBeacon YModule BEACON_ ON else module setBeacon YModule BEACON OFF EE EE e E e printStackTrace Chaque propri t xxx du module peut tre lue gr ce a une m thode du type YModule get xxxx et les propri t s qui se sont pas en lecture seule peuvent tre modifi es l aide de la m
23. Utilisation du Yocto Servo en Javascript 2 0 0 ccc ccc cs eeseeseeseeseeeeesneens 31 Hides PRODALATION KEE 31 7 2 Contr le de la fonction Servo iii 31 7 3 Contr le de la partie module ss 33 A GOSIION GES Erreurs Le E AN En Ee 36 8 Utilisation du Yocto Servo en PHP seseris 39 SL Pr paration Ze 39 8 2 Contr le de la fonction emp essesi eredera Eanna LAEE SNEEU EE ENN i N KEELEE EKLENEN 39 8 3 Contr le de la partie module sise 41 8 4 API par callback HTTP et filtres NAT iii 44 8 5 G stion des rreurs EE 47 9 Utilisation du Yocto Servo en C 49 9 1 Contr le de la fonction Servo iii 49 9 2 Contr le de la partie module sise 51 9 3 Gestion des erreurs ees eer dee AE Eege Eel aed ea 54 9 4 Int gration de la librairie Yoctopuce en C oie ceeecceecceceeeeeeeeeeeceeeeeeeeeeeeeseeecneeeeeeeteneneeeeeeees 54 10 Utilisation du Yocto Servo en Objective C oo eeeesteseeeneeee 57 10 1 Contr le de la fonction Servo iii 57 10 2 Contr le de la partie module sisi 59 10 3 G stion EE 61 11 Utilisation du Yocto Servo en VisualBasic NET 63 Tiled INStallatOm sise set nn Gens A nr ie nine 63 11 2 Utilisation l API yoctopuce dans un projet Visual Basic eee eeeeeeeeeeeeeneeeeeeneeeereaees 63 11 3 Contr le de la fonction Servo iii 64 11 4 Contr le de la partie module sise 66 11 5 G stion d s rr urs 25e dance nil EUER AAE eee eile eden tee du lande do 68 12 Utilisation du Y
24. YModule target get_luminosity Retourne un entier repr sentant la luminosit des leds informatives du module valeur entre 0 et 100 En cas d erreur d clenche une exception ou retourne Y_LUMINOSTTY_INVALID YModule 162 www yoctopuce com 19 R f rence de l API de haut niveau module get_persistentSettings module gt persistentSettings Retourne l tat courant des r glages persistents du module function get_persistentSettings function get_persistentSettings function get_persistentSettings Y_PERSISTENTSETTINGS_enum get_persistentSettings Y_PERSISTENTSETTINGS enum persistentSettings function get_persistentSettings Integer function get_persistentSettings As Integer int get_persistentSettings int get_persistentSettings def get_persistentSettings YModule target get_persistentSettings Retourne module une valeur parmi Y_PERSISTENTSETTINGS_LOADED Y_PERSISTENTSETTINGS_SAVED et YModule Y_PERSISTENTSETTINGS_MODIFIED repr sentant l tat courant des r glages persistents du En cas d erreur d clenche une exception ou retourne Y_PERSISTENTSETTINGS_INVALTD www yoctopuce com 163 19 R f rence de l API de haut niveau module get_productid YModule module gt productld Retourne l identifiant USB du module pr programm en usine function get_productld function get_productld function get_productld cpp
25. Yocto Temperature configure view log file beacon L Show device functions Cliquer sur le bouton configure de la premi re ligne MESSE LE TEE Ty Edit parameters for VIRTHUBO 7d1a86f009 and click on the Save button Serial VIRTHUBO 7 d1a86fb09 Product name VirtualHub Software version 10789 Logical name Incoming connections Authentication to read information from the devices NO edit Authentication to make changes to the devices NO it Outgoing callbacks Callback URL octoHub eit Delay between callbacks min 3 s max 600 s This VirtualHub can post the advertised values of all devices on a specific URL on a regular basis If you wish to use this feature choose the callback type follow the steps below carefully 1 Specify the Type of callback you want to use Yocto API callback zl Yoctopuce devices can be controled through remote PHP scripts That Yocto AP callback protocol is designed so it can pass trough NAT filters without opening ports See your device user manual PHP programming section for more details 2 Specify the URL to use for reporting values HTTPS protocol is not yet supported Callback URL httpviwww mysite com yoctotest yoctocontrol php 3 If your callback requires authentication enter credentials here Digest authentication is recommended but Basic authentication works as well Username lyocto Password esseesse 4 Setup the desired frequency of not
26. au central t l phonique lui m me Les postes internes ne sont pas atteignables depuis l ext rieur www mysite com 192 168 0 1 64 136 20 37 a i i i _ __ a e as AS c 192 168 0 102 ED Configuration DSL typique les machines du LAN sont isol es de l ext rieur par le router DSL Ce qui transpos en terme de r seau donne les appareils connect s sur un r seau domestique peuvent communiquer entre eux en utilisant une adresse IP locale du genre 192 168 xxx yyy et contacter des serveurs sur Internet par leur adresse publique mais vu de l ext rieur il n y a qu une seule adresse IP officielle attribu e au routeur DSL exclusivement Les diff rents appareils r seau ne sont pas directement atteignables depuis l ext rieur C est assez contraignant mais c est une protection relativement efficace contre les intrusions 44 www yoctopuce com 8 Utilisation du Yocto Servo en PHP r ponse Les r ponses aux requ tes venant des machines du LAN sont rout es requ te el Mais les requ tes venant de l ext rieur sont bloqu es Voir Internet sans tre vu repr sente un avantage de s curit norme Cependant cela signifie qu a priori on ne peut pas simplement monter son propre serveur Web publique chez soi pour une installation domotique et offrir un acc s depuis l ext rieur Une solution ce probl me pr conis e par de nombreux vendeurs de domotique consiste
27. cessairement de quelques secondes dans le meilleur des cas Le mode Yocto APl par callback HTTP n est pour l instant disponible qu en PHP et Node JS 8 5 Gestion des erreurs Lorsque vous impl mentez un programme qui doit interagir avec des modules USB vous ne pouvez pas faire abstraction de la gestion des erreurs Il y aura forc ment une occasion o un utilisateur aura d branch le p riph rique soit avant de lancer le programme soit m me en pleine op ration La librairie Yoctopuce est pr vue pour vous aider supporter ce genre de comportements mais votre code doit n anmoins tre fait pour se comporter au mieux pour interpr ter les erreurs signal es par la librairie La mani re la plus simple de contourner le probl me est celle que nous avons employ pour les petits exemples pr c dents de ce chapitre avant d acc der un module on v rifie qu il est en ligne avec la m thode isOnline et on suppose ensuite qu il va y rester pendant la fraction de www yoctopuce com 47 8 Utilisation du Yocto Servo en PHP seconde n cessaire ex cuter les lignes de code suivantes Ce n est pas parfait mais a peut suffire dans certains cas Il faut toutefois tre conscient qu on ne peut pas totalement exclure une erreur se produisant apr s le isOnline qui pourrait faire planter le programme La seule mani re de l viter est d impl menter une des deux techniques de gestion des erreurs d crites ci dessous La
28. d clenche une exception ou retourne un code d erreur n gatif www yoctopuce com 129 19 R f rence de l API de haut niveau YAPI RegisterDeviceArrivalCallback YAPI yRegisterDeviceArrivalCallback Enregistre une fonction de callback qui sera appel e a chaque fois qu un module est branch function yRegisterDeviceArrivalCallback arrivalCallback nodejs function RegisterDeviceArrivalCallback arrivalCallback function yRegisterDeviceArrivalCallback arrivalCallback void yRegisterDeviceArrivalCallback yDeviceUpdateCallback arrivalCallback void yRegisterDeviceArrivalCallback yDeviceUpdateCallback arrivalCallback procedure yRegisterDeviceArrivalCallback arrivalCallback yDeviceUpdateFunc procedure yRegisterDeviceArrivalCallback ByVal arrivalCallback As yDeviceUpdateFunc void RegisterDeviceArrivalCallback yDeviceUpdateFunc arrivalCallback synchronized static void RegisterDeviceArrivalCallback DeviceArrivalCallback arrivalCallback def RegisterDeviceArrivalCallback arrivalCallback Le callback sera appel pendant l xecution de la fonction yHandleDeviceList que vous devrez appeler r guli rement Param tres arrivalCallback une proc dure qui prend un YModu le en param tre ou null 130 www yoctopuce com 19 R f rence de l API de haut niveau YAPI RegisterDeviceRemovalCallback YAPI yRegisterDeviceRemovalCallback Enregistre une fonction de callback qui sera appel e c
29. donner une visibilit externe au serveur de domotique lui m me en ouvrant un port et en ajoutant une r gle de routage dans la configuration NAT du routeur DSL Le probl me de cette solution est qu il expose le serveur de domotique aux attaques externes L API par callback HTTP r soud ce probl me sans qu il soit n cessaire de modifier la configuration du routeur DSL Le script de contr le des modules est plac sur un site externe et c est le Virtual Hub qui est charg de l appeler intervalle r gulier VirtualHub yoctocontrol php requ te r ponse L API par callback HTTP utilise le VirtualHub et c est lui qui initie les requ tes www yoctopuce com 45 8 Utilisation du Yocto Servo en PHP Configuration L API callback se sert donc du Virtual Hub comme passerelle Toutes les communications sont initi es par le Virtual Hub ce sont donc des communication sortantes et par cons quent parfaitement autoris e par le routeur DSL Il faut configurer le VirtualHub pour qu il appelle le script PHP r guli rement Pour cela il faut Lancer un VirtualHub PORNE Acc der son interface g n ralement 127 0 0 1 4444 Cliquer sur le bouton configure de la ligne correspondant au VirtualHub lui m me Cliquer sur le bouton edit de la section Outgoing callbacks Logical Name Description Action 0 VirtualHub configure view log file a Yocto PowerRelay Configure view log file beacon
30. f rence de l API de haut niveau servo set_neutral YServo servo setNeutral Modifie la dur e de l impulsion correspondant la position neutre du servo function set_neutral newval function set_neutral newval function set_neutral newval int set_neutral int newval int setNeutral int newval function set_neutral newval Longint integer function set_neutral ByVal newval As Integer As Integer int set_neutral int newval int set_neutral int newval def set_neutral newval YServo target set_neutral newval La dur e est sp cifi e en microsecondes et la valeur standard est 1500 us Ce r glage permet de d caler la plage d utilisation du servo Attention l utilisation d une plage sup rieure aux caract ristiques du servo risque fortement d endommager le servo Ge Param tres newval un entier repr sentant la dur e de l impulsion correspondant la position neutre du servo Retourne YAPI_SUCCESS si l op ration se d roule sans erreur En cas d erreur d clenche une exception ou retourne un code d erreur n gatif www yoctopuce com 215 19 R f rence de l API de haut niveau servo set_position YServo servo setPosition Modifie imm diatement la consigne de position du servo function set_position newval function set_position newval function set_position newval int set_position int newval int setPosition int newval function
31. function describe string describe NSString describe function describe string function describe As String string describe String describe def describe Ce texte peut contenir soit le nom logique du module soit son num ro de s rie YModule Retourne une chaine de caract res d crivant le module 148 www yoctopuce com 19 R f rence de l API de haut niveau module download YModule T l charge le fichier choisi du module et retourne son contenu function download pathname function download pathname function download pathname string download string pathname NSData download NSString pathname function download pathname string TByteArray function download As Byte def download pathname YModule target download pathname Param tres pathname nom complet du fichier Retourne le contenu du fichier charg En cas d erreur d clenche une exception ou retourne un contenu vide www yoctopuce com 149 19 R f rence de l API de haut niveau module gt functionCount YModule Retourne le nombre de fonctions sans compter l interface module existant sur le module function functionCount function functionCount function functionCount cpp int functionCount int functionCount pas function functionCount integer v function functionCount As Integer cs__ int functionCount def functionCo
32. int msValidity int load long msValidity def load msValidity Par d faut lorsqu on acc de a un module tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur e standard 5 ms Cette m thode peut tre utilis e pour marquer occasionellement les donn es cach es comme valides pour une plus longue p riode par exemple dans le but de r duire le trafic r seau Param tres msValidity un entier correspondant la dur e de validit attribu e aux les param tres charg s en millisecondes Retourne YAPI_SUCCESS si l op ration se d roule sans erreur En cas d erreur d clenche une exception ou retourne un code d erreur n gatif www yoctopuce com 175 19 R f rence de l API de haut niveau module load_async YModule Met en cache les valeurs courantes du module avec une dur e de validit sp cifi e function load_async msValidity callback context function load_async msValidity callback context Par d faut lorsqu on acc de a un module tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur e standard 5 ms Cette m thode peut tre utilis e pour marquer occasionellement les donn es cach es comme valides pour une plus longue p riode par exemple dans le but de r duire le trafic r seau Cette version asynchrone n existe qu en Javascript Elle utilise une fonction de callback plut t qu une simple valeur
33. le contexte fourni par l appelant l objet fonction concern et l instance demand e de YModule context contexte fourni par l appelant et qui sera pass tel quel la fonction de callback Retourne rien du tout le r sultat sera pass en param tre la fonction de callback www yoctopuce com 235 19 R f rence de l API de haut niveau dualpower get_powerControl YDualPower dualpower powerControl Retourne le mode d alimentation choisi pour les fonctions du module consommant beaucoup de courant function get_powerControl function get_powerControl function get_powerControl Y_POWERCONTROL_enum get_powerControl Y_POWERCONTROL_enum powerControl function get_powerControl Integer vb function get_powerControl As Integer int get_powerControl int get_powerControl def get_powerControl Y DualPower target get_powerControl Retourne une valeur parmi Y_POWERCONTROL_AUTO Y_POWERCONTROL_FROM_USB Y_POWERCONTROL_FROM_EXT et Y_POWERCONTROL_ OFF repr sentant le mode d alimentation choisi pour les fonctions du module consommant beaucoup de courant En cas d erreur d clenche une exception ou retourne Y_POWERCONTROL_INVALID 236 www yoctopuce com 19 R f rence de l API de haut niveau dualpower get_powerState YDualPower dualpower powerState Retourne la source d alimentation active pour les fonctions du module consommant beaucoup de courant functi
34. par le module Retourne YAPI_SUCCESS si l op ration se d roule sans erreur En cas d erreur d clenche une exception ou retourne un code d erreur n gatif 184 www yoctopuce com 19 R f rence de l API de haut niveau module set userData YModule module setUserData Enregistre un contexte libre dans l attribut userData de la fonction afin de le retrouver plus tard l aide de la m thode get_userData function set_userData data function set_userData data function set_userData data void set_userData void data void setUserData void data procedure set_userData data Tobject procedure set_userData ByVal data As Object void set_userData object data void set_userData Object data def set_userData data Cet attribut n es pas utilis directement par l API Il est la disposition de l appelant pour stocker un contexte Param tres data objet quelconque m moriser www yoctopuce com 185 19 R f rence de l API de haut niveau module gt triggerFirmwareUpdate YModule Agende un red marrage du module en mode sp cial de reprogrammation du logiciel embarqu function triggerFirmwareUpdate secBeforeReboot function triggerFirmwareUpdate secBeforeReboot function triggerFirmwareUpdate secBeforeReboot int triggerFirmwareUpdate int secBeforeReboot int triggerFirmwareUpdate int secBeforeReboot pas function triggerFirmwareUpdate secBefore
35. rence de l API de haut niveau module get_hardwareld YModule module gt hardwareld Retourne l identifiant unique du module function get_hardwareld function get_hardwareld function get_hardwareld string get_hardwareld NSString hardwareld function get_hardwareld As String string get_hardwareld String get_hardwareld def get_hardwareld L identifiant unique est compos du num ro de s rie du module suivi de la cha ne module Retourne une chaine de caract res identifiant la fonction 158 www yoctopuce com 19 R f rence de l API de haut niveau module get_icon2d module icon2d YModule Retourne l ic ne du module function get_icon2d function get_icon2d function get_icon2d string get_icon2d NSData icon2d function get_icon2d TByteArray function get_icon2d As Byte def get_icon2d YModule target get_icon2d L icone est au format PNG et a une taille maximale de 1536 octets Retourne un buffer binaire contenant l icone au format png www yoctopuce com 159 19 R f rence de l API de haut niveau module get_lastLogs YModule module lastLogs Retourne une chaine de charact re contenant les derniers logs du module function get_lastLogs function get_lastLogs function get_lastLogs string get_lastLogs NSString lastLogs function get_lastLogs string function get_la
36. rique soit avant de lancer le programme soit m me en pleine op ration La librairie Yoctopuce est pr vue pour vous aider supporter ce genre de comportements mais votre code doit n anmoins tre fait pour se comporter au mieux pour interpr ter les erreurs signal es par la librairie La mani re la plus simple de contourner le probl me est celle que nous avons employ pour les petits exemples pr c dents de ce chapitre avant d acc der un module on v rifie qu il est en ligne avec la m thode isOnline et on suppose ensuite qu il va y rester pendant la fraction de seconde n cessaire ex cuter les lignes de code suivantes Ce n est pas parfait mais a peut suffire dans certains cas II faut toutefois tre conscient qu on ne peut pas totalement exclure une erreur se produisant apr s le isOnline qui pourrait faire planter le programme Dans l API java le traitement d erreur est impl ment au moyen d exceptions Vous devrez donc intercepter et traiter correctement ces exceptions si vous souhaitez avoir un projet fiable qui ne crashera pas des que vous d brancherez un module 96 www yoctopuce com 16 Utilisation du Yocto Servo avec Android A vrai dire Android n est pas un langage de programmation c est un syst me d exploitation d velopp par Google pour les appareils portables tels que smart phones et tablettes Mais il se trouve que sous Android tout est programm avec le m me langage de programmation Java
37. tres callback fonction de callback qui sera appel e d s que le r sultat sera connu La fonction callback re oit trois arguments le contexte fourni par l appelant l objet fonction concern et le r sultat bool en context contexte fourni par l appelant et qui sera pass tel quel la fonction de callback Retourne rien du tout le r sultat sera pass en param tre la fonction de callback 240 www yoctopuce com 19 R f rence de l API de haut niveau dualpower load YDualPower Met en cache les valeurs courantes du contr le d alimentation avec une dur e de validit sp cifi e function load msValidity function load msValidity function load msValidity YRETCODE load int msValidity YRETCODE load int msValidity function load msValidity integer YRETCODE function load ByVal msValidity As Integer As YRETCODE YRETCODE load int msValidity int load long msValidity def load msValidity Par d faut lorsqu on acc de a un module tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur e standard 5 ms Cette m thode peut tre utilis e pour marquer occasionellement les donn es cach es comme valides pour une plus longue p riode par exemple dans le but de r duire le trafic r seau Param tres msValidity un entier correspondant la dur e de validit attribu e aux les param tres charg s en millisecondes Retourne YAPI_
38. 2 usage m YModule FindModule sys argv 1 use serial or logical name if m isOnline www yoctopuce com 87 14 Utilisation du Yocto Servo en Python e EE if sys argv 2 upper ON m set beacon YModule BEACON ON IE sys argy 2 upper 0 JOER EE Ee BEACONSOHE print is ermal m get_serialNumber print logical name m get_logicalName EE U stem get luminosity ON if m get_beacon YModule BEACON ON print beacon ON Glen print beacon OFF print upTime War sieve imo Cee Gamme OOM eY seer print USB currente Lt See tingerausbeurnenitr jin E print logs n m get_lastLogs eileas PEI sys anol umor connected echeck wdentitilcacilonmand USB cabilie Chaque propri t xxx du module peut tre lue gr ce a une m thode du type YModule get xxxx et les propri t s qui se sont pas en lecture seule peuvent tre modifi es l aide de la m thode YModule set xxx Pour plus de d tails concernant ces fonctions utilis es reportez vous aux chapitre API Modifications des r glages du module Lorsque que vous souhaitez modifier les r glages d un module il suffit d appeler la fonction YModule set xxx correspondante cependant cette modification n a lieu que dans la m moire vive du module si le module red marre les modifications seront perdues Pour qu elle soient m moris es de mani re persistante il est n cessaire de demander au module de sauvegar
39. ArrayAdapter lt String gt aa private YModule module null Override public void onCreate Bundle savedInstanceState super onCreate savedinstanceState setContentView R layout savesettings Spinner my spin Spinner findViewById R id spinner1 my spin setOnktemse liectedinisitener this aa new ArrayAdapter lt String gt this android R layout simple spinner item aa setDropDownViewResource android R layout simple spinner dropdown item my spin setAdapter aa Override protected void onStart 104 www yoctopuce com 16 Utilisation du Yocto Servo avec Android super onStart CE as clear YAPI EnableUSBHost this YAPI RegisterHub usb YModule r YModule FirstModule while r null String hwid r get_hardwareId aa add hwid r r nextModule Lk Gewei MUNN Mpxcicjpicseim it enprime otac kurace refresh Spinner with detected relay aa notifyDataSetChanged Override protected void onStop super onStop YAPI FreeAPI private void DisplayModuleInfo TextView field if module null IESEL Ery YAPI UpdateDeviceList fixme field TextView findViewById R id logicalnamefield field setText module getLogicalName le Eeer VAP TEE xc ep tone printStackTrace Override public void onItemSelected AdapterView lt gt parent View view int pos Long ad String hwid parent ge
40. Les versions de Android actuellement support es sont 3 1 et suivantes De plus il est n cessaire que la tablette ou le t l phone supporte le mode USB Host Yoctopuce teste r guli rement le bon fonctionnement des modules avec Android 4 0 sur un Nexus 7 et un Samsung Galaxy S3 avec la librairie Java pour Android Un cable USB de type A micro B Il existe trois tailles de connecteurs USB la taille normale que vous utilisez probablement pour brancher votre imprimante la taille mini encore tr s courante et enfin la taille micro souvent utilis e pour raccorder les t l phones portables pour autant qu ils n arborent pas une pomme Les modules de Yoctopuce sont tous quip s d une connectique au format micro USB kr Les connecteurs USB 2 les plus courants A B Mini B Micro A Micro B 3 2 Le driver HID est celui qui g re les p riph riques tels que la souris le clavier etc Le connecteur Mini A a exist quelque temps mais a t retir du standard USB http www usb org developers Deprecation_Announcement_052507 pdf 2 www yoctopuce com 1 Introduction Pour connecter votre module Yocto Servo un ordinateur vous avez besoin d un cable USB de type A micro B Vous trouverez ce cable en vente des prix tr s variables selon les sources sous la d nomination USB A to micro B Data cable Prenez garde ne pas acheter par m garde un simple c ble de charge qui ne fournirait que le courant mais sans les fils de d
41. SERVORC1 123456 servol Pour g rer le hot plug on v rifie que le module est l 1 En fait d s qu Opera impl mentera le support pour le header HTTP Access Control Allow Origin e www yoctopuce com FR libraries php 3 www yoctopuce com FR virtualhub php www yoctopuce com 31 7 Utilisation du Yocto Servo en Javascript if servo isOnline EE SEE POSL CLON Voyons maintenant en d tail ce que font ces quelques lignes yocto_api js et yocto_servo js Ces deux includes Javascript permettent d avoir acc s aux fonctions permettant de g rer les modules Yoctopuce yocto api js doit toujours tre inclus yocto_servo js est n cessaire pour g rer les modules contenant un servo comme le Yocto Servo yRegisterHub La fonction yRegisterHub permet d indiquer sur quelle machine se trouve les modules Yoctopuce ou plus exactement la machine sur laquelle tourne le programme VirtualHub Dans notre cas l adresse 127 0 0 1 4444 indique la machine locale en utilisant le port 4444 le port standard utilis par Yoctopuce Vous pouvez parfaitement changer cette adresse et mettre l adresse d une autre machine sur laquelle tournerait un autre VirtualHub yFindServo La fonction yFindServo permet de retrouver un servo en fonction du num ro de s rie de son module h te et de son nom de fonction Mais vous pouvez tout aussi bien utiliser des noms logiques que vous auriez pr alablement configur s Imaginons un module Yo
42. Store Par ailleurs aussi bien sous Mac OS X que sous Linux vous pouvez compiler les exemples en ligne de commande avec GCC en utilisant le GNUmakefile fourni De m me sous Windows un Makefile pour permet de compiler les exemples en ligne de commande et en pleine connaissance des arguments de compilation et link Les librairies Yoctopuce pour C vous sont fournies au format source dans leur int gralit Une partie de la librairie de bas niveau est crite en C pur sucre mais vous n aurez priori pas besoin d interagir directement avec elle tout a t fait pour que l interaction soit le plus simple possible depuis le C La librairie vous est fournie bien entendu aussi sous forme binaire de sorte pouvoir la linker directement si vous le pr f rez Vous allez rapidement vous rendre compte que l API C defini beaucoup de fonctions qui retournent des objets Vous ne devez jamais d sallouer ces objets vous m me Ils seront d sallou s automatiquement par l API la fin de l application Afin des les garder simples tous les exemples fournis dans cette documentation sont des applications consoles Il va de soit que que les fonctionnement des librairies est strictement identiques si vous les int grez dans une application dot e d une interface graphique Vous trouverez dans la derni re section de ce chapitre toutes les informations n cessaires a la cr ation d un projet a neuf link avec les librairies Yoctopuce 9 1 Co
43. TOTA fous retenue errmsg data pansitehar LUE AS 1e Nbre const serial SERVORC1 12345 getValue GET api module luminosity HTTP 1 1 13 10 13 10 setValue GET api module luminosity 100 HTTP 1 1 13 10 13 10 begin errmsg G errmsgBuffer data dataBuffer API initialization if yapiInitAPI 1 errmsg lt 0 then begin writeln errmsg hot end forces a device inventory if yapiUpdateDeviceList 1 errmsg lt 0 then begin writeln errmsg alt end requests the module luminosity if yapiHTTPRequest serial getValue data sizeof dataBuffer fullsize errmsg lt 0 then begin writeln errmsg halt end searches for the HTTP header end D pos 13 10 13 10 data displays the response minus the HTTP header writeln copy data p 4 length data p 3 change the luminosity if yapiHTTPRequest serial setValue data sizeof dataBuffer fullsize errmsg lt 0 then begin writeln errmsg halte end end 114 www yoctopuce com 18 Utilisation avec des langages non support s Inventaire des modules Pour proc der l inventaire des modules Yoctopuce deux fonctions de la librairie dynamique sont n cessaires int yapiGetAllDevices int buffer int maxsize int neededsize char errmsg int yapiGetDeviceInfo int devdesc yDeviceSt infos char errmsg La fonction yapiGetAllDevices permet d obtenir la liste des modules connect s sous la forme d une liste de handles b
44. USB quelques tapes suppl mentaires sont n cessaires Si vous comptez uniquement interagir avec des modules connect s sur une autre machine par IP vous pouvez ignorer cette section Il faut d clarer dans son AndroidManifest xml l utilisation de la fonctionnalit USB Host en ajoutant le tag lt uses feature android name android hardware usb host gt dans la section manifest lt manifest gt lt uses feature android name android hardware usb host gt 2 Les YoctoHub sont un moyen simple et efficace d ajouter une connectivit r seau a vos modules Yoctopuce http www yoctopuce com FR products category extensions et reseau 98 www yoctopuce com 16 Utilisation du Yocto Servo avec Android lt manifest gt Lors du premier acc s un module Yoctopuce Android va ouvrir une fen tre pour informer l utilisateur que l application va acc der module connect L utilisateur peut refuser ou autoriser lacc s au p riph rique Si l utilisateur accepte l application pourra acc der au p riph rique connect jusqu la prochaine d connexion du p riph rique Pour que la librairie Yoctopuce puisse g rer correctement ces autorisations il faut lui fournir un pointeur sur le contexte de l application en appelant la m thode EnableUSBHost de la classe YAPI avant le premier acc s USB Cette fonction prend en argument un objet de la classe android content Context ou d une sous classe Comme la classe Act
45. Un ordinateur Les modules de Yoctopuce sont destin s tre pilot s par un ordinateur ou ventuellement un microprocesseur embarqu Vous crirez vous m me le programme qui pilotera le module selon vos besoin l aide des informations fournies dans ce manuel Yoctopuce fourni les librairies logicielles permettant de piloter ses modules pour les syst mes d exploitation suivants Windows Mac OS X Linux et Android Les modules Yoctopuce ne n cessitent pas l installation de driver ou pilote sp cifiques car ils utilisent le driver HID fourni en standard dans tous les syst mes d exploitation Les versions de Windows actuellement support es sont Windows XP Windows 2003 Windows Vista et Windows 7 Les versions 32 bit et 64 bit sont support es Yoctopuce teste r guli rement le bon fonctionnement des modules sur Windows XP et Windows 7 Les versions de Mac OS X actuellement support es sont Mac OS X 10 6 Snow Leopard 10 7 Lion et 10 8 Mountain Lion Yoctopuce teste r guli rement le bon fonctionnement des modules sur Mac OS X 10 6 et 10 7 Les versions de Linux support es sont les kernels 2 6 et 3 0 D autre versions du kernel et m me d autres variantes d Unix sont tr s susceptibles d tre utilis es sans probl me puisque le support de Linux est fait via l API standard de la libusb disponible aussi pour FreeBSD par exemple Yoctopuce teste r guli rement le bon fonctionnement des modules sur un kernel Linux 2 6
46. Y BEACON ON html ON lt a href javascript beacon Y BEACON OFF gt switch off lt a gt lt br gt alga html OFF lt a href javascript beacon Y BEACON ON gt switch on lt a gt lt br gt html upTime parseInt module get upTime 1000 sec lt br gt html USB current module get_usbCurrent mA lt br gt html logs lt br gt lt pre gt tmodule get_lastlogs lt pre gt lt br gt document getElementById data innerHTML html else document getHElementById msg value Module not connected setTimeout refresh 1000 function beacon state module set_beacon state refresh gt lt SCRIPT gt lt HEAD gt lt BODY onload refresh gt Module to use lt input id serial gt lt input id msg style color red border none readonly gt lt br gt lt span id data gt lt span gt lt BODY gt lt HTML gt Chaque propri t xxx du module peut tre lue grace une m thode du type get_xxxx et les propri t s qui se sont pas en lecture seule peuvent tre modifi es l aide de la m thode set xxx Pour plus de d tails concernant ces fonctions utilis es reportez vous aux chapitre API Modifications des r glages du module Lorsque que vous souhaitez modifier les r glages d un module il suffit d appeler la fonction set _xxx correspondante cependant cette modification n a lieu que dans la m moire vive du module si le module
47. appel e d s que toutes les commandes en cours d ex cution sur le module seront termin es La fonction callback re oit deux arguments le contexte fourni par l appelant et l objet fonction concern context contexte fourni par l appelant et qui sera pass tel quel la fonction de callback Retourne rien du tout www yoctopuce com 219 19 R f rence de l API de haut niveau 19 4 Interface de contr le de l alimentation La librairie de programmation Yoctopuce permet de contr ler la source d alimentation qui doit tre utilis e pour les fonctions du module consommant beaucoup de courant Le module est par ailleurs capable de couper automatiquement l alimentation externe lorsqu il d tecte que la tension a trop chut batterie puis e Pour utiliser les fonctions d crites ici vous devez inclure lt script type text javascript src yocto_dualpower js gt lt script gt var yoctolib require yoctolib var YDualPower yoctolib YDualPower require_oncel yocto_dualpower php include yocto_dualpower h import yocto_dualpower h uses yocto_dualpower yocto_dualpower vb yocto_dualpower cs import com yoctopuce YoctoAP YDualPower from yocto_dualpower import Fonction globales yFindDualPower func Permet de retrouver un contr le d alimentation d apr s un identifiant donn yFirstDualPower Commence l num ration des contr les d alimentation accessibles par la librairie M t
48. au cours de la vie du module Veillez donc ne pas appeler cette fonction depuis l int rieur d une boucle Enumeration des modules Obtenir la liste des modules connect s se fait l aide de la fonction YModule yFirstModule qui renvoie le premier module trouv il suffit ensuite d appeler la mehode nextModule de cet objet pour trouver les modules suivants et ce tant que la r ponse n est pas un null Ci dessous un petit exemple listant les module connect s import com yoctopuce YoctoAPI public class Demo public static void main String args cry setup the API to use local VirtualHub VARI Regis ee len HEI catch YAPI Exception ex System ee enee contact vVirecual P Hubtonm 2n 0m0 TE ex getLocalizedMessage System out println Ensure that the VirtualHub application is running System exit 1 oys emk out yp amin line ya Cells tem YModule module YModule FirstModule while module null Fee System out println module get serialNumber module get productName earch MAP EE break I module module nextModule YAPI FreeAPI www yoctopuce com 95 15 Utilisation du Yocto Servo en Java 15 4 Gestion des erreurs Lorsque vous impl mentez un programme qui doit interagir avec des modules USB vous ne pouvez pas faire abstraction de la gestion des erreurs Il y aura forc ment une occasion o un utilisateur aura d branch le p riph
49. c pour mac os x www yoctopuce com 57 10 Utilisation du Yocto Servo en Objective C exit 1 int Meainiink arger Const char aroili NSError error aise Eliseo CMS usage autoreleasepool Setup the API to use local USB devices if YAPI RegisterHub usb amp error YAPT SUCCESS NSLogi RegisterHub error 2G error llocaluzedDescriptilon return 1 NSString target NSString stringWithUTF8String argv 1 if target isEqualToString any YServo servo YServo FirstServo if servo NULL NSLog No module connected check USB cable return 1 target servo module serialNumber YServo servol YServo FindServo target stringByAppendingString servol YServo servo5 YServo FindServo target stringByAppendingString servo5 ant pos int ato Maroy 2 if servol isOnline servol set_position pos immediate switch servo5 move pos 3000 smooth transition else NSLog Module not connected check identification and USB cable n return 0 Il n y a que peu de lignes v ritablement importantes dans le code pr c dent Nous allons les expliquer en d tail yocto_api h et yocto_servo h Ces deux fichiers import s permettent d avoir acc s aux fonctions permettant de g rer les modules Yoctopuce yocto api h doit toujours tre utilis yocto servo h est n cessaire pour g rer les modules contenant un servo
50. ce que font ces quelques lignes yocto_api php et yocto_servo php Ces deux includes PHP permettent d avoir acc s aux fonctions permettant de g rer les modules Yoctopuce yocto api php doit toujours tre inclus yocto servo php est n cessaire pour g rer les modules contenant un servo comme le Yocto Servo yRegisterHub La fonction yRegisterHub permet d indiquer sur quelle machine se trouve les modules Yoctopuce ou plus exactemenent sur quelle machine tourne le programme VirtualHub Dans notre cas l adresse 127 0 0 1 4444 indique la machine locale en utilisant le port 4444 le port standard utilis par Yoctopuce Vous pouvez parfaitement changer cette adresse et mettre l adresse d une autre machine sur laquelle tournerait un autre VirtualHub yFindServo La fonction yFindServo permet de retrouver un servo en fonction du num ro de s rie de son module h te et de son nom de fonction Mais vous pouvez tout aussi bien utiliser des noms logiques que vous auriez pr alablement configur s Imaginons un module Yocto Servo avec le num ros de s rie SERVORC1 123456 que vous auriez appel MonModule et dont vous auriez nomm la fonction servo1 MaFonction les cinq appels suivants seront strictement quivalents pour autant que MaFonction ne soit d finie qu une fois pour viter toute ambigu t Sservo yFindServo SERVORC1 123456 servol Sservo yFindServo SERVORC1 123456 MaFonction Sservo yFindServo MonModule
51. ces quelques lignes YAPI EnableUSBHost La fonction YAPI EnableUSBHost initialise l API avec le Context de l application courante Cette fonction prend en argument un objet de la classe android content Contest ou d une sous classe Si vous comptez uniquement vous connecter a d autres machines par IP vous cette fonction est factultative YAPI RegisterHub La fonction YAPI RegisterHub initialise l API de Yoctopuce en indiquant o les modules doivent tre recherch s Le param tre est l adresse du virtual hub capable de voir les modules Si l on passe la chaine de caract re usb l API va travailler avec les modules connect s localement la machine Si l initialisation se passe mal une exception sera g n r e YServo FindServo La fonction YServo FindServo permet de retrouver un servo en fonction du num ro de s rie de son module h te et de son nom de fonction Mais vous pouvez tout aussi bien utiliser des noms logiques que vous auriez pr alablement configur s Imaginons un module Yocto Servo avec le num ros de s rie SERVORC1 123456 que vous auriez appel MonModule et dont vous auriez nomm la fonction servo MaFonction les cinq appels suivants seront strictement quivalents pour autant que MaFonction ne soit d finie qu une fois pour viter toute ambigu t servo YServo FindServo SERVORC1 123456 servol servo YServo FindServo SERVORC1 123456 MaFonction servo YServo FindServo
52. comme le Yocto Servo yRegisterHub La fonction yRegisterHub initialise l API de Yoctopuce en indiquant o les modules doivent tre recherch s Utilis e avec le param tre usb elle permet de travailler avec les modules connect s localement la machine Si l initialisation se passe mal cette fonction renverra une valeur diff rente de YAPI SUCCESS et retournera via le param tre errmsg un explication du probl me yFindServo La fonction yFindServo permet de retrouver un servo en fonction du num ro de s rie de son module h te et de son nom de fonction Mais vous pouvez tout aussi bien utiliser des noms logiques que vous auriez pr alablement configur s Imaginons un module Yocto Servo avec le num ros de s rie SERVORC1 123456 que vous auriez appel MonModule et dont vous auriez nomm la fonction servo1 MaFonction les cinq appels suivants seront strictement quivalents pour autant que MaFonction ne soit d finie qu une fois pour viter toute ambigu t YServo servo yFindServo SERVORC1 123456 servol YServo servo yFindServo SERVORC1 123456 MaFonction 58 www yoctopuce com 10 Utilisation du Yocto Servo en Objective C YServo servo yFindServo MonModule servol YServo servo yFindServo MonModule MaFonction YServo servo yFindServo MaFonction yFindServo renvoie un objet que vous pouvez ensuite utiliser loisir pour contr ler le servo isOnline La m
53. commercialise des bo tiers sp cialement con us pour les modules Yoctopuce Ces bo tiers sont munis de pattes de fixation amovibles et d aimants de fixation Vous trouverez plus d informations propos de ces bo tiers sur le site de Yoctopuce Le bo tier recommand pour votre Yocto Servo est le mod le YoctoBox Short Thick Black Vous pouvez installer votre Yocto Servo dans un bo tier optionnel 4 vous pouvez utiliser le bornier Ref MPT 0 5 2 2 54 de Phoenix Contact 5 http www yoctopuce com EN products category enclosures www yoctopuce com 2 Pr sentation 1 Prise USB micro B 6 ER Canal servo 3 2 Yocto bouton 7 Canal servo 4 3 Yocto led 8 Canal servo 5 4 Canal servo 1 9 Led alimentation par USB 5 Canal servo 2 10 Led alimentation externe 11 Connecteur alimentation externe 2 1 Les l ments communs Tous les Yocto modules ont un certain nombre de fonctionnalit s en commun Le connecteur USB Les modules de Yoctopuce sont tous quip s d une connectique au format micro USB Les c bles correspondants ne sont pas forc ment les plus faciles trouver mais ces connecteurs ont l avantage d occuper un minimum de place Attention le connecteur USB est simplement soud en surface et peut tre arrach si la prise USB venait faire levier Si les pistes sont rest es en place le connecteur peut tre ressoud l aide d un bon fer et de flux Alternativement vous pouvez
54. d corr l s dessein Mais l API offre n anmoins la possibilit de passer de l un l autre Ainsi la m thode get _ module disponible dans chaque classe de fonctionnalit permet de retrouver l objet correspondant au module h bergeant cette fonctionnalit Inversement la classe YModule dispose 18 www yoctopuce com 5 Programmation concepts g n raux d un certain nombre de m thodes permettant d num rer les fonctionnalit s disponibles sur un module 5 2 Le module Yocto Servo Le module Yocto Servo offre une interface de contr le de l alimentation de puissance et cinq instances de la fonction Servo correspondant aux cinq controlleurs de servo moteur du module module Module attribut type modifiable productName Texte lecture seule serialNumber Texte lecture seule logicalName Texte modifiable productId Entier hexad cimal lecture seule productRelease Entier hexad cimal lecture seule firmwareRelease Texte lecture seule persistentSettings Type num r modifiable luminosity 0 100 modifiable beacon On Off modifiable upTime Temps lecture seule usbCurrent Courant consomm en mA lecture seule rebootCountdown Nombre entier modifiable usbBandwidth Type num r modifiable dualPower DualPower attribut type modifiable logicalName Texte modifiable advertisedValue Texte lecture seule powerState powerControl extVoltage Type num r Type num r
55. de fonctionnement n est disponible actuellement qu en PHP et en Node JS Attention seule une application peut fonctionner a la fois sur une machine donn e en acc s direct a USB sinon il y aurait un conflit d acc s aux modules Cela signifie en particulier que vous devez stopper le VirtualHub avant de lancer une application utilisant l acc s direct USB Cette limitation peut tre contourn e en passant par un VirtualHub plut t que d utiliser directement USB Si vous d sirez vous connecter un Hub virtuel ou non sur lequel le controle d acc s a t activ vous devez donner le param tre url sous la forme http nom mot_de_passe adresse port Vous pouvez appeller RegisterHub plusieurs fois pour vous connecter a plusieurs machines diff rentes Parametres url une cha ne de caract res contenant usb callback ou l URL racine du VirtualHub a utiliser errmsg une chaine de caract res pass e par r f rence dans laquelle sera stock un ventuel message d erreur Retourne YAPI_SUCCESS si l op ration se d roule sans erreur 132 www yoctopuce com 19 R f rence de l API de haut niveau En cas d erreur d clenche une exception ou retourne un code d erreur n gatif www yoctopuce com 133 19 R f rence de l API de haut niveau YAPI RegisterHubDiscoveryCallback YAPI yRegisterHubDiscoveryCallback Enregistre une fonction de callback qui sera appel e a chaque fois qu un Hu
56. de retour pour viter de bloquer la VM Javascript de Firefox qui n impl mente pas le passage de contr le entre threads durant les appels d entr e sortie bloquants Param tres msValidity un entier correspondant la dur e de validit attribu e aux les param tres charg s en millisecondes callback fonction de callback qui sera appel e d s que le r sultat sera connu La fonction callback re oit trois arguments le contexte fourni par l appelant l objet module concern et le code d erreur ou YAPT_ SUCCESS context contexte fourni par l appelant et qui sera pass tel quel la fonction de callback Retourne rien du tout le r sultat sera pass en param tre la fonction de callback 176 www yoctopuce com 19 R f rence de l API de haut niveau module nextModule YModule Continue l num ration des modules commenc e l aide de yFirstModule function nextModule function nextModule function nextModule YModule nextModule YModule nextModule function nextModule TYModule function nextModule As YModule YModule nextModule YModule nextModule def nextModule Retourne un pointeur sur un objet YModule accessible en ligne ou nul 1 lorsque l num ration est termin e www yoctopuce com 177 19 R f rence de l API de haut niveau module reboot YModule Agende un simple red marrage du module dans un nombre donn de sec
57. de retour sera YAPI SUCCESS si tout va bien et un code d erreur diff rent en cas d chec 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 et errMessage Ce sont les m me informations qui auraient t associ es l exception si elles avaient t actives www yoctopuce com 77 78 www yoctopuce com 13 Utilisation du Yocto Servo en Delphi Delphi est l h ritier de Turbo Pascal A l origine Delphi tait produit par Borland mais c est maintenant Embarcadero qui l dite Sa force r side dans sa facilit d utilisation il permet quiconque ayant des notions de Pascal de programmer une application Windows en deux temps trois mouvements Son seul d faut est d tre payant Les librairies pour Delphi sont fournies non pas sous forme de composants VCL mais directement sous forme de fichiers source Ces fichiers sont compatibles avec la plupart des version de Delphi Afin des les garder simples tous les exemples fournis dans cette documentation sont des applications consoles II va de soit que le fonctionnement des librairies est strictement identique avec des applications VCL Vous allez rapidement vous rendre compte que l API Delphi d fini beaucoup de fonctions qui retournent des objets Vous ne devez jam
58. extends Activity implements OnItemSelectedListener private ArrayAdapter lt String gt aa private YModule module null Override public void onCreate Bundle savedInstanceState super onCreate savedInstanceState setContentView R layout modulecontrol Spinner my spin Spinner findViewById R id spinner1 102 www yoctopuce com 16 Utilisation du Yocto Servo avec Android my spin setOnItemSelectedListener this aa new ArrayAdapter lt String gt this android R layout simple spinner item aa setDropDownViewResource android R layout simple spinner dropdown item my spin setAdapter aa Override protected void onStart Super onstart Ley i aa clear YAPI EnableUSBHost this YAPI Registerhubi usb YModule r YModule FirstModule while r null String hwid r get_hardwareId aa add hwid r r nextModule Catch YAPI Exception e printStackTrace refresh Spinner with detected relay aa notifyDataSetChanged Override protected void onStop super onStop YAPI FreeAPI private void DisplayModulelnfo TextView field if module null CEEE ELy 4 field TextView findViewById R id serialfield field setText module getSerialNumber field TextView findViewById R id logicalnamefield field setText module getLogicalName field TextView findViewById R id luminosityfield field setText
59. int get_productld int productId pas function get_productld Longint v _ function get_productld As Integer cs int get_productld java int get_productld def get_productld YModule target get_productlid Retourne un entier repr sentant l identifiant USB du module pr programm en usine En cas d erreur d clenche une exception ou retourne Y_PRODUCTID_INVALID 164 www yoctopuce com 19 R f rence de l API de haut niveau module get_productName module productName Retourne le nom commercial du module pr programm en usine function get_productName function get_productName function get_productName string get_productName NSString productName function get_productName string function get_productName As String string get_productName String get_productName def get_productName YModule target get_productName Retourne YModule une cha ne de caract res repr sentant le nom commercial du module pr programm en usine En cas d erreur d clenche une exception ou retourne Y_PRODUCTNAME_INVALID www yoctopuce com 165 19 R f rence de l API de haut niveau module get_productRelease YModule module productRelease Retourne le num ro de version mat riel du module pr programm en usine function get_productRelease function get_productRelease function get_productRelease int get_productReleas
60. l API de haut niveau Ce chapitre r sume les fonctions de l API de haut niveau pour commander votre Yocto Servo La syntaxe et les types pr cis peuvent varier d un langage l autre mais sauf avis contraire toutes sont disponibles dans chaque language Pour une information plus pr cise sur les types des arguments et des valeurs de retour dans un langage donn veuillez vous r f rer au fichier de d finition pour ce langage yocto api ainsi que les autres fichiers yocto d finissant les interfaces des fonctions Dans les langages qui supportent les exceptions toutes ces fonctions vont par d faut g n rer des exceptions en cas d erreur plut t que de retourner la valeur d erreur document e pour chaque fonction afin de faciliter le d boguage Il est toutefois possible de d sactiver l utilisation d exceptions l aide de la fonction yDisableExceptions si l on pr f re travailler avec des valeurs de retour d erreur Ce chapitre ne reprend pas en d tail les concepts de programmation d crits plus t t afin d offrir une r f rence plus concise En cas de doute n h sitez pas retourner au chapitre d crivant en d tail de chaque attribut configurable www yoctopuce com 117 19 R f rence de l API de haut niveau 19 1 Fonctions g n rales Ces quelques fonctions g n rales permettent l initialisation et la configuration de la librairie Yoctopuce Dans la plupart des cas un appel yRegisterHub suffira en
61. la liste des modules Yoctopuce connect s function yUpdateDeviceList_async callback context function UpdateDeviceList_async callback context La librairie va v rifier sur les machines ou ports USB pr c demment enregistr s en utilisant la fonction yRegisterHub si un module a t connect ou d connect et le cas ch ant appeler les fonctions de callback d finies par l utilisateur Cette fonction peut tre appel e aussi souvent que d sir afin de rendre l application r active aux v nements de hot plug Cette version asynchrone n existe qu en Javascript Elle utilise une fonction de callback plut t qu une simple valeur de retour pour viter de bloquer la VM Javascript de Firefox qui n impl mente pas le passage de contr le entre threads durant les appels d entr e sortie bloquants Param tres callback fonction de callback qui sera appel e d s que le r sultat sera connu La fonction callback re oit deux arguments le contexte fourni par l appelant et le code de retour YAPT_ SUCCESS si l op ration se d roule sans erreur context contexte fourni par l appelant et qui sera pass tel quel la fonction de callback Retourne rien du tout le r sultat sera pass en param tre la fonction de callback 142 www yoctopuce com 19 R f rence de l API de haut niveau 19 2 Interface de contr le du module Cette interface est la m me pour tous les modules USB de Yoctopuce Elle per
62. le cas de fonctions qui ne retournent priori pas d information la valeur de retour sera YAPI SUCCESS si tout va bien et un code d erreur diff rent en cas d chec 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 et errMessage Ce sont les m me informations qui auraient t associ es l exception si elles avaient t actives 62 www yoctopuce com 11 Utilisation du Yocto Servo en VisualBasic NET VisualBasic a longtemps t la porte d entr e privil gi e vers le monde Microsoft Nous nous devions donc d offrir notre interface pour ce langage m me si la nouvelle tendance est le C Tous les exemples et les mod les de projet sont test s avec Microsoft Visual Basic 2010 Express disponible gratuitement sur le site de Microsoft 1 11 1 Installation T l chargez la librairie Yoctopuce pour Visual Basic depuis le site web de Yoctopuce Il n y a pas de programme d installation copiez simplement de contenu du fichier zip dans le r pertoire de votre choix Vous avez besoin essentiellement du contenu du r pertoire Sources Les autres r pertoires contiennent la documentation et quelques programmes d exemple Les projets d exemple sont des projets Visual Basic 2010 si vous utilisez une version ant rieure il
63. logiciel interne qui contr le le module rencontre une erreur fatale elle se met flasher SOS en morse Si cela arrivait d branchez puis rebranchez le module Si le probl me venait se reproduire v rifiez que le module contient bien la derni re version du firmware et dans l affirmative contactez le support Yoctopuce La sonde de courant Chaque Yocto module est capable de mesurer sa propre consommation de courant sur le bus USB La distribution du courant sur un bus USB tant relativement critique cette fonctionnalit peut tre d un grand secours La consommation de courant du module est consultable par logiciel uniquement Le num ro de s rie Chaque Yocto module a un num ro de s rie unique attribu en usine pour les modules Yocto Servo ce num ro commence par SERVORC1 Le module peut tre pilot par logiciel en utilisant ce num ro de s rie Ce num ro de s rie ne peut pas tre chang Le nom logique Le nom logique est similaire au num ro de s rie c est une chaine de caract re sens e tre unique qui permet r f rencer le module par logiciel Cependant contrairement au num ro de s rie le nom logique peut tre modifi volont L int r t est de pouvoir fabriquer plusieurs exemplaire du m me projet sans avoir modifier le logiciel de pilotage Il suffit de programmer les m me noms logique dans chaque exemplaire Attention le comportement d un projet devient impr visible s il contient plusieurs mod
64. m me en pleine op ration La librairie Yoctopuce est pr vue pour vous aider supporter ce genre de comportements mais votre code doit n anmoins tre fait pour se comporter au mieux pour interpr ter les erreurs signal es par la librairie La mani re la plus simple de contourner le probl me est celle que nous avons employ pour les petits exemples pr c dents de ce chapitre avant d acc der un module on v rifie qu il est en ligne avec la m thode isOnline et on suppose ensuite qu il va y rester pendant la fraction de seconde n cessaire ex cuter les lignes de code suivantes Ce n est pas parfait mais a peut suffire dans certains cas Il faut toutefois tre conscient qu on ne peut pas totalement exclure une erreur se produisant apr s le isOnline qui pourrait faire planter le programme La seule mani re de l viter est d impl menter une des deux techniques de gestion des erreurs d crites ci dessous 36 www yoctopuce com 7 Utilisation du Yocto Servo en Javascript 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 e Si votre code attrape l exception au vol et la g re et tout se passe bien e Si votre programme t
65. me en pleine op ration La librairie Yoctopuce est pr vue pour vous aider supporter ce genre de comportements mais votre code doit n anmoins tre fait pour se comporter au mieux pour interpr ter les erreurs signal es par la librairie www yoctopuce com 83 13 Utilisation du Yocto Servo en Delphi La mani re la plus simple de contourner le probl me est celle que nous avons employ pour les petits exemples pr c dents de ce chapitre avant d acc der un module on v rifie qu il est en ligne avec la m thode isOnline et on suppose ensuite qu il va y rester pendant la fraction de seconde n cessaire ex cuter les lignes de code suivantes Ce n est pas parfait mais a peut suffire dans certains cas Il faut toutefois tre conscient qu on ne peut pas totalement exclure une erreur se produisant apr s le isOnline qui pourrait faire planter le programme La seule mani re de l viter est d impl menter une des deux techniques de gestion des erreurs d crites ci dessous 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 e Si votre code attrape l exception au vol et la g re et tout se passe bien e Si votre programme tourne
66. module par l interface REST Les fonctionnalit s des modules se manipulent de la m me mani re Pour conna tre l tat de la fonction servo1 il suffit de construire l URL suivante http 127 0 0 1 4444 bySerial SERVORC1 12345 api servol txt En revanche si vous pouvez utiliser le nom logique du module en lieu et place de son num ro de s rie vous ne pouvez pas utiliser les noms logiques des fonctions seuls les noms hardware sont autoris s pour les fonctions Vous pouvez retrouver un attribut d une fonction d un module d une mani re assez similaire a celle utilis e avec les modules par exemple http 127 0 0 1 4444 bySerial SERVORC1 12345 api servol logicalName Assez logiquement les attributs peuvent tre modifi s de la m me mani re http 127 0 0 1 4444 bySerial SERVORC1 12345 api servol logicalName maFonction Vous trouverez la liste des attributs disponibles pour votre Yocto Servo au d but du chapitre Programmation concepts g n raux 112 www yoctopuce com 18 Utilisation avec des langages non support s Acc s aux donn es enregistr es sur le datalogger par l interface REST Cette section s applique uniquement aux modules dot s d un enregistreur de donn e La version r sum e des donn es enregistr es dans le datalogger peut tre obtenue au format JSON l aide de l URL suivante http 127 0 0 1 4444 bySerial SERVORC1 12345 dataLogger json Le d tail de chaque mesure pour un chaque tranche d e
67. modules USB connect s Il faut compter environ une seconde par appel 18 2 Virtual Hub et HTTP GET Le Virtual Hub est disponible pour presque toutes les plateformes actuelles il sert g n ralement de passerelle pour permettre l acc s aux modules Yoctopuce depuis des langages qui interdisent l acc s direct aux couches mat rielles d un ordinateur Javascript PHP Java A Il se trouve que le Virtual Hub est en fait un petit serveur Web qui est capable de router des requ tes HTTP vers les modules Yoctopuce Ce qui signifie que si vous pouvez faire une requ te HTTP depuis votre langage de programmation vous pouvez contr ler des modules Yoctopuce m me si ce langage n est pas officiellement support Interface REST A bas niveau les modules sont pilot s l aide d une API REST Ainsi pour contr ler un module il suffit de faire les requ tes HTTP appropri es sur le Virtual Hub Par d faut le port HTTP du Virtual Hub est 4444 www yoctopuce com 111 18 Utilisation avec des langages non support s Un des gros avantages de cette technique est que les tests pr liminaires sont tr s faciles mettre en uvre il suffit d un Virtual Hub et d un simple browser Web Ainsi si vous copiez l URL suivante dans votre browser favori alors que le Virtual Hub est en train de tourner vous obtiendrez la liste des modules pr sents http 127 0 0 1 4444 api services whitePages txt Remarquez que le r sultat est pr sent sous form
68. monde id al il suffirait d avoir un t l phone sous Android pour pouvoir faire fonctionner des modules Yoctopuce Malheureusement la r alit est l g rement diff rente un appareil tournant sous Android doit r pondre un certain nombre d exigences pour pouvoir faire fonctionner des modules USB Yoctopuce en natif 1 www yoctopuce com FR libraries php www yoctopuce com 97 16 Utilisation du Yocto Servo avec Android Android 4 x Android 4 0 api 14 et suivants sont officiellement support s Th oriquement le support USB host fonctionne depuis Android 3 1 Mais sachez que Yoctopuce ne teste r guli rement l API Java pour Android qu partir de Android 4 Support USB host Il faut bien s r que votre machine dispose non seulement d un port USB mais il faut aussi que ce port soit capable de tourner en mode host En mode host la machine prend litt ralement le contr le des p riph riques qui lui sont raccord s Les ports USB d un ordinateur bureau par exemple fonctionnent mode host Le pendant du mode host est le mode device Les clefs USB par exemple fonctionnent en mode device elles ne peuvent qu tre contr l es par un host Certains ports USB sont capables de fonctionner dans les deux modes ils s agit de ports OTG On The Go Il se trouve que beaucoup d appareils portables ne fonctionnent qu en mode device ils sont con us pour tre branch s chargeur ou un ordinateur de bureau rien de plus Il est donc for
69. ms Cette m thode peut tre utilis e pour marquer occasionellement les donn es cach es comme valides pour une plus longue p riode par exemple dans le but de r duire le trafic r seau Param tres msValidity un entier correspondant la dur e de validit attribu e aux les param tres charg s en millisecondes Retourne YAPI_SUCCESS si l op ration se d roule sans erreur En cas d erreur d clenche une exception ou retourne un code d erreur n gatif www yoctopuce com 209 19 R f rence de l API de haut niveau servo load_async YServo Met en cache les valeurs courantes du servo avec une dur e de validit sp cifi e function load_async msValidity callback context function load_async msValidity callback context Par d faut lorsqu on acc de un module tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur e standard 5 ms Cette m thode peut tre utilis e pour marquer occasionellement les donn es cach es comme valides pour une plus longue p riode par exemple dans le but de r duire le trafic r seau Cette version asynchrone n existe qu en Javascript Elle utilise une fonction de callback plut t qu une simple valeur de retour pour viter de bloquer la machine virtuelle Javascript avec une attente active Param tres msValidity un entier correspondant la dur e de validit attribu e aux les param tres charg s en mill
70. name if module gt isOnline ti aenge 2 4 if string argv 2 ON module gt set beacon Y BEACON ON else module gt set beacon Y BEACON OFF courses Wsemiailk we lt lt nodule gt oehuserlclNumper EE cout lt lt logical name lt lt module gt get_logicalName lt lt endl cout lt lt bh Ee Date EE lt lt module get luminosity lt lt endl cout lt lt beacon We if module gt get beacon Y BEACON ON Eeer else ee ee LOR es rendi cout lt lt upTime lt lt module gt get upTime 1000 lt lt sec lt lt endl COUL lt lt MYSE EE EE D module gt get usbCurrent NN lt lt CRC Dk cout lt lt Logs lt lt endl lt lt module gt get_lastLogs lt lt endl else cout lt lt argv 1l lt lt not connected check identification and USB cable lt lt endl return 0 Chaque propri t xxx du module peut tre lue grace une m thode du type get_xxxx et les propri t s qui se sont pas en lecture seule peuvent tre modifi es l aide de la m thode set xxx Pour plus de d tails concernant ces fonctions utilis es reportez vous aux chapitre API Modifications des r glages du module Lorsque que vous souhaitez modifier les r glages d un module il suffit d appeler la fonction set _xxx correspondante cependant cette modification n a lieu que dans la m moire vive du module si le module red marre les modifications seront perdues Pour q
71. objet d finissez votre callback sous la forme d une proc dure globale qui ensuite appellera votre m thode 110 www yoctopuce com 18 Utilisation avec des langages non support s Les modules Yoctopuce peuvent tre contr l s depuis la plupart des langages de programmation courants De nouveaux langages sont ajout s r guli rement en fonction de l int r t exprim par les utilisateurs de produits Yoctopuce Cependant certains langages ne sont pas et ne seront jamais support s par Yoctopuce les raisons peuvent tre diverses compilateurs plus disponibles environnements inadapt s etc Il existe cependant des m thodes alternatives pour acc der des modules Yoctopuce depuis un langage de programmation non support 18 1 Ligne de commande Le moyen le plus simple pour contr ler des modules Yoctopuce depuis un langage non support consiste utiliser l API en ligne de commande travers des appels syst me L API en ligne de commande se pr sente en effet sous la forme d un ensemble de petits ex cutables qu il est facile d appeler et dont la sortie est facile analyser La plupart des langages de programmation permettant d effectuer des appels syst me cela permet de r soudre le probl me en quelques lignes Cependant si l API en ligne de commande est la solution la plus facile ce n est pas la plus rapide ni la plus efficace chaque appel l ex cutable devra initialiser sa propre API et faire l inventaire des
72. param tres d un module et permettant d activer la balise de localisation import com yoctopuce YoctoAPI import java util logging Level import java util logging Logger public class Demo public static void main String args CEVEA setup the API to use local VirtualHub VARIM REg S Le AUDE TP lr catch YAPT Exception ex System Out prinklin Meannok contact Vaintualhub ony 1270020 ex getLocalizedMessage System out println Ensure that the VirtualHub application is running System exit 1 System out println usage demo serial or logical name ON OFF YModule module if args length 0 module YModule FirstModule if module null System out println No module connected check USB cable SyS teme exin www yoctopuce com 93 15 Utilisation du Yocto Servo en Java Leite i module YModule FindModule args 0 use serial or logical name Cry alse cisco dree p ler S gt al fl if args 1 equalsIgnoreCase ON module setBeacon YModule BEACON ON bk elses i module setBeacon YModule BEACON OFF System out printin serial module get serialNumber System out printin logical name module get_logicalName System out println luminosity module get_luminosity if module get beacon YModule BEACON ON System out printin beacon ON kelsa System out printin beacon OERANG System out printin upTime Ui ar te
73. r joignable Cette fonction ne cause en aucun cas d exception quelle que soit l erreur qui pourrait se produire lors de la v rification de joignabilit Cette version asynchrone n existe qu en Javascript Elle utilise une fonction de callback plut t qu une simple valeur de retour pour viter de bloquer la machine virtuelle Javascript avec une attente active Param tres callback fonction de callback qui sera appel e d s que le r sultat sera connu La fonction callback re oit trois arguments le contexte fourni par l appelant l objet fonction concern et le r sultat bool en context contexte fourni par l appelant et qui sera pass tel quel la fonction de callback Retourne rien du tout le r sultat sera pass en param tre la fonction de callback 208 www yoctopuce com 19 R f rence de l API de haut niveau servo load YServo Met en cache les valeurs courantes du servo avec une dur e de validit sp cifi e function load msValidity function load msValidity function load msValidity YRETCODE load int msValidity YRETCODE load int msValidity function load msValidity integer YRETCODE function load ByVal msValidity As Integer As YRETCODE YRETCODE load int msValidity int load long msValidity def load msValidity Par d faut lorsqu on acc de a un module tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur e standard 5
74. 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 YAPI SUCCESS si tout va bien et un code d erreur diff rent en cas d chec T 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 et errMessage Ce sont les m me informations qui auraient t associ es l exception si elles avaient t actives 9 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 54 www yoctopuce com 9 Utilisation du Yocto Servo en C Int gration au format source 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 e Elle facilite le d boggage si vous cherchez la cause d un probl me li la librairie Yoctopuce e Elle r duit les d pendances sur des composants tiers par exemple pour parer au cas o vous pourriez tre men recompiler ce proje
75. servol Sservo yFindServo MonModule MaFonction Sservo yFindServo MaFonction yFindServo renvoie un objet que vous pouvez ensuite utiliser loisir pour contr ler le servo isOnline La m thode isOnline de l objet renvoy par yFindServo permet de savoir si le module correspondant est pr sent et en tat de marche set_position La m thode set position de l objet renvoy par yFindServo permet de d placer le plus rapidement possible le servo vers la position sp cifi e Le point milieu correspond la valeur 0 et les deux extr mit s correspondent aux valeurs 1000 et 1000 move La m thode move de l objet renvoy par yFindServo permet d effectuer le d placement vers une position d sir e en un intervalle de temps contr l sp cifi en millisecondes Un exemple r el Ouvrez votre diteur de texte pr f r recopiez le code ci dessous sauvez le dans un r pertoire accessible par votre serveur web PHP avec les fichiers de la librairie et ouvrez la page avec votre 4 Si vous n avez pas d diteur de texte utilisez Notepad plut t que Microsoft Word 40 www yoctopuce com 8 Utilisation du Yocto Servo en PHP browser favori Vous trouverez aussi ce code dans le r pertoire Examples Doc GettingStarted Yocto Servo de la librairie Yoctopuce Vous reconnaitrez dans cet exemple l utilisation des fonctions expliqu es ci dessus cette fois utilis es avec le d corum n cessaire en fa
76. set_position newval Longint integer _vb function set_position ByVal newval As Integer As Integer int set_position int newval int set_position int newval def set_position newval YServo target set_position newval Param tres newval un entier repr sentant imm diatement la consigne de position du servo Retourne YAPI_SUCCESS si l op ration se d roule sans erreur En cas d erreur d clenche une exception ou retourne un code d erreur n gatif 216 www yoctopuce com 19 R f rence de l API de haut niveau servo set_range servo setRange Modifie la plage d utilisation du servo en pourcents function set_range newval function set_range newval function set_range newval int set_range int newval int setRange int newval function set_range newval Longint integer function set_range ByVal newval As Integer As Integer int set_range int newval int set_range int newval def set_range newval YServo target set_range newval YServo La valeur 100 correspond a un signal de commande standard variant de 1 ms a 2 ms Pour les servos supportent une plage double de 0 5 ms a 2 5 ms vous pouvez utiliser une valeur allant jusqu 200 Attention l utilisation d une plage sup rieure aux caract ristiques du servo risque fortement d endommager le servo Param tres Retourne YAPI_SUCCESS si l op ration se d roule sans erreur newval un entier r
77. signal es par la librairie La mani re la plus simple de contourner le probl me est celle que nous avons employ pour les petits exemples pr c dents de ce chapitre avant d acc der un module on v rifie qu il est en ligne avec la m thode isOnline et on suppose ensuite qu il va y rester pendant la fraction de seconde n cessaire ex cuter les lignes de code suivantes Ce n est pas parfait mais a peut suffire dans certains cas II faut toutefois tre conscient qu on ne peut pas totalement exclure une erreur se produisant apr s le isOnline qui pourrait faire planter le programme La seule mani re de l viter est d impl menter une des deux techniques de gestion des erreurs d crites ci dessous 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 e Si votre code attrape l exception au vol et la g re et tout se passe bien e 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 e Sinon l exception va crasher votre programme boum Comme cette derni re situation n est pas la plus souhaitable la librairie Yoc
78. string var errmsg string integer function yRegisterHub ByVal url As String ByRef errmsg As String As Integer int RegisterHub string url ref string errmsg synchronized static int RegisterHub String url def RegisterHub url errmsg None Le premier param tre d termine le fonctionnement de l API il peut prendre les valeurs suivantes usb Si vous utilisez le mot cl usb l API utilise les modules Yoctopuce connect s directement par USB Certains languages comme PHP Javascript et Java ne permettent pas un acc s direct aux couches mat rielles usb ne marchera donc pas avec ces languages Dans ce cas utilisez un VirtualHub ou un YoctoHub r seau voir ci dessous X x x x ou hostname L API utilise les modules connect s la machine dont l adresse IP est x x x x OU dont le nom d h te DNS est hostname Cette machine peut tre un ordinateur classique faisant tourner un VirtualHub ou un YoctoHub avec r seau YoctoHub Ethernet YoctoHub Wireless Si vous d sirez utiliser le VirtualHub tournant sur votre machine locale utilisez l adresse IP 127 0 0 1 callback Le mot cl callback permet de faire fonctionnner l API dans un mode app l callback HTTP C est un mode sp cial permettant entre autres de prendre le contr le de modules Yoctopuce travers un filtre NAT par l interm diaire d un VirtualHub ou d un Hub Yoctopuce II vous suffit de configuer le hub pour qu il appelle votre script a intervalle r gulier Ce mode
79. thode YModule set xxx Pour plus de d tails concernant ces fonctions utilis es reportez vous aux chapitre API Modifications des r glages du module Lorsque que vous souhaitez modifier les r glages d un module il suffit d appeler la fonction YModule set xxx correspondante cependant cette modification n a lieu que dans la m moire vive du module si le module red marre les modifications seront perdues Pour qu elle soient m moris es de mani re persistante il est n cessaire de demander au module de sauvegarder sa configuration courante dans sa m moire non volatile Pour cela il faut utiliser la m thode YModule saveToFlash Inversement il est possible de forcer le module oublier ses r glages courants en utilisant la m thode YModule revertFromFlash Ce petit exemple ci dessous vous permet changer le nom logique d un module package com yoctopuce doc_ examples import android app Activity import android os Bundle import android view View import android widget AdapterView import android widget AdapterView OnItemSelectedListener import android widget ArrayAdapter import android widget EditText import android widget Spinner import android widget TextView import android widget Toast import com yoctopuce YoctoAPI YAPI import com yoctopuce YoctoAPI YAPI Exception import com yoctopuce YoctoAPI YModule public class SaveSettings extends Activity implements OnItemSelectedListener private
80. use serial or logical name if module isOnline it Varga gt 2 4 if stremp argv 2 ON 0 module setBeacon Y BEACON ON else module setBeacon Y BEACON OFF NSLog serial S n module serialNumber NSLog logical name n module logicalName NSLog luminosity Sd n module luminosity NSLog beacon DAVEE if module beacon Y BEACON ON NSLog ON n else NSLog OFF n NSLog upTime d sec n module upTime 1000 NSLog USB current d mA n module usbCurrent NSLog logs n module get_lastLogs else www yoctopuce com 59 10 Utilisation du Yocto Servo en Objective C NSLog not connected check identification and USB cable n serial or name return 0 Chaque propri t xxx du module peut tre lue grace a une m thode du type get xxxx et les propri t s qui se sont pas en lecture seule peuvent tre modifi es l aide de la m thode set xxx Pour plus de d tails concernant ces fonctions utilis es reportez vous aux chapitre API Modifications des r glages du module Lorsque que vous souhaitez modifier les r glages d un module il suffit d appeler la fonction set xxx correspondante cependant cette modification n a lieu que dans la m moire vive du module si le module red marre les modifications seront perdues Pour qu elle soient m moris es de mani re persistante il est n cessaire de demander au module de sauvegarder sa c
81. value module get logicalName else document getElementByld msg value Module not connected setTimeout refresh 1000 function save var newname document getElementByld newName value if yCheckLogicalName newname alert invalid logical name return module set logicalName newname module saveToFlash gt lt SCRIPT gt lt HEAD gt lt BODY onload refresh gt Module to use lt input id serial gt lt input id msg style color red border none readonly gt lt br gt Current name lt input id curName readonly gt lt br gt New logical name lt input id newName gt lt a href javascript save gt Save lt a gt lt BODY gt lt HTML gt Attention le nombre de cycle d criture de la m moire non volatile du module est limit Pass cette limite plus rien ne garantit de que la sauvegarde des r glages se passera correctement Cette limite li a la technologie employ par le micro processeur du module se situe aux alentour de 100000 cycles Pour r sumer vous ne pouvez employer la fonction saveToFlash que 100000 fois au cours de la vie du module Veillez donc a ne pas appeler cette fonction depuis l int rieur d une boucle www yoctopuce com 35 7 Utilisation du Yocto Servo en Javascript num ration des modules Obtenir la liste des modules connect s se fait a l aide de la fonction yFirstModule qui renvoie le premier module
82. 0 Attention le nombre de cycles d criture de la m moire non volatile du module est limit Pass cette limite plus rien ne garantit que la sauvegarde des r glages se passera correctement Cette limite li e la technologie employ e par le micro processeur du module se situe aux alentour de 100000 cycles Pour r sumer vous ne pouvez employer la fonction saveToFlash que 100000 fois au cours de la vie du module Veillez donc ne pas appeler cette fonction depuis l int rieur d une boucle Enumeration des modules Obtenir la liste des modules connect s se fait a l aide de la fonction yFirstModule qui renvoie le premier module trouv il suffit ensuite d appeler la fonction nextModule de cet objet pour trouver les modules suivants et ce tant que la r ponse n est pas un NULL Ci dessous un petit exemple listant les module connect s include lt iostream gt Leinen octo eet Ja using namespace std int mannin aroge eons C EE Eich string errmsg Setup the API to use local USB devices if yRegisterHub usb errmsg YAPI SUCCESS tee lt lt Eeer Eeselen Gieieeiey 1 lt lt Eier lt lt See return 1 coue lt lt Device Eeer HE YModule module yFirstModule while module NULL couci lt Eeer erte e As cout lt lt module gt get productName lt lt endl www yoctopuce com 53 9 Utilisation du Yocto Servo en C module module gt nextModule ret
83. 00mA si le p riph rique les r clame explicitement Dans le cas d un hub non aliment il a droit 100mA pour lui m me et doit permettre chacun de ses 4 ports d utiliser 100mA au maximum C est tout et c est pas beaucoup Cela veut dire en particulier qu en th orie brancher deux hub USB non aliment s en cascade ne marche pas Pour cascader des hubs USB il faut utiliser des hubs USB aliment s qui offriront 500mA sur chaque port En pratique USB n aurait pas eu le succ s qu il a si il tait si contraignant Il se trouve que par conomie les fabricants de hubs omettent presque toujours d impl menter la limitation de courant sur les ports ils se contentent de connecter l alimentation de tous les ports directement l ordinateur tout en se d clarant comme hub aliment m me lorsqu ils ne le sont pas afin de d sactiver tous les contr les de consommation dans le syst me d exploitation C est assez malpropre mais dans la mesure ou les ports des ordinateurs sont eux en g n ral prot g s par une limitation de courant mat rielle vers 2000mA a ne marche pas trop mal et cela fait rarement des d g ts Ce que vous devez en retenir si vous branchez des modules Yoctopuce via un ou des hubs non aliment s vous n aurez aucun garde fou et d pendrez enti rement du soin qu aura mis le fabricant de votre ordinateur pour fournir un maximum de courant sur les ports USB et signaler les exc s avant qu ils ne conduisent des panne
84. F7 and click on the Save button Serial SERVORC1 004F7 Product name Yocto Servo Firmware 3375 ugrade Logical name Luminosity I signal leds only Device s functions Each function of the device have two names a physical name anda logical name You can change the logical name using the rename button SERVORC1 004F7 servot rename SERVORC1 004F7 servo2 rename SERVORC1 004F7 servo3 SERVORC1 004F7 servo4 SERVORC1 004F7 servo5 SERVORC1 004F7 dualPower rename Servos power control You can chose how the servo motors are powered and remenber you are not supposed to draw more than 500mA from an USB port Power Mode Automatic EI Save Cancel Configuration du module Yocto Servo Le firmware du module peut tre facilement tre mis a jour l aide de l interface Pour ce faire vous devez au pr alable disposer du firmware ad quat sur votre disque local Les firmwares destin s aux 10 www yoctopuce com 3 Premiers pas modules Yoctopuce se pr sentent sous la forme de fichiers byn et peuvent tre t l charg s depuis le site web de Yoctopuce Pour mettre jour un firmware cliquez simplement sur le bouton upgrade de la fen tre de configuration et suivez les instructions Si pour une raison ou une autre la mise jour venait a chouer d branchez puis rebranchez le module Recommencer la proc dure devrait r soudre alors le probl me Si le module a t d b
85. LAUNCHER gt lt intent filter gt lt meta data android name android hardware usb action USB DEVICE ATTACHED android resource xml device filter gt lt activity gt lt application gt lt manifest gt Le fichier XML qui contient la liste des modules qui peuvent lancer l application doit tre sauv dans le r pertoire res xml Ce fichier contient une liste de vendorld et devicelD USB en d cimal L exemple suivant lance l application d s qu un Yocto Relay ou un Yocto PowerRelay est connect Vous pouvez trouver le vendorld et deviceld des modules Yoctopuce dans la section caract ristiques de la documentation lt xml version 1 0 encoding utf 8 gt lt resources gt lt usb device vendor id 9440 product id 12 gt lt usb device vendor id 9440 product id 13 gt lt resources gt www yoctopuce com 99 16 Utilisation du Yocto Servo avec Android 16 5 Contr le de la fonction Servo Il suffit de quelques lignes de code pour piloter un Yocto Servo Voici le squelette d un fragment de code Java qui utilise la fonction Servo seal On r cup re l objet repr sentant le module ici connect en local sur USB YAPI EnableUSBHost this YAPI RegisterHub usb servo YServo FindServo SERVORC1 123456 servol Pour g rer le hot plug on v rifie que le module est la if servo isOnline Use servo set position est Voyons maintenant en d tail ce que font
86. Nombre entier lecture seule modifiable lecture seule servo Servo servo2 Servo servo3 Servo servo4 Servo servos Servo attribut type modifiable logicalName Texte modifiable advertisedValue Texte lecture seule position Nombre entier modifiable range 0 100 modifiable neutral 0 65000 us modifiable move Agr gat modifiable 5 3 Interface de contr le du module Cette interface est la m me pour tous les modules USB de Yoctopuce Elle permet de contr ler les param tres g n raux du module et d num rer les fonctions fournies par chaque module productName Cha ne de caract res contenant le nom commercial du module pr programm en usine serialNumber Chaine de caract res contenant le num ro de s rie unique et pr programm en usine Pour un module Yocto Servo ce num ro de s rie commence toujours par SERVORC1 Il peut servir comme point de d part pour acc der par programmation a un module particulier www yoctopuce com 19 5 Programmation concepts g n raux logicalName Chaine de caract res contenant le nom logique du module initialement vide Cet attribut peut tre chang au bon vouloir de l utilisateur Une fois initialis une valeur non vide il peut servir de point de d part pour acc der un module particulier Si deux modules avec le m me nom logique se trouvent sur le m me montage il n y a pas moyen de d terminer lequel va r pondre si l on tente un acc s par ce
87. ON servo get_functionDescriptor Retourne un identifiant unique de type YF UN_DESCR correspondant a la fonction servo get_functionld Retourne l identifiant mat riel du servo sans r f rence au module servo get_hardwareld Retourne l identifiant mat riel unique du servo au format SERTAL FUNCTIONID servo get_logicalName Retourne le nom logique du servo servo get_module Retourne l objet YModule correspondant au module Yoctopuce qui h berge la fonction servo get module async callback context Retourne l objet YModule correspondant au module Yoctopuce qui h berge la fonction 188 www yoctopuce com 19 R f rence de l API de haut niveau servo get_neutral Retourne la dur e en microsecondes de l impulsion correspondant au neutre du servo servo get_position Retourne la position courante du servo servo get_range Retourne la plage d utilisation du servo servo get_userData Retourne le contenu de l attribut userData pr c demment stock l aide de la m thode set_userData servo isOnline V rifie si le module h bergeant le servo est joignable sans d clencher d erreur servo isOnline_async callback context V rifie si le module h bergeant le servo est joignable sans d clencher d erreur servo load msValidity Met en cache les valeurs courantes du servo avec une dur e de validit sp cifi e servo
88. Online_async callback context Si les valeurs des attributs du module en cache sont valides au moment de l appel le module est consid r joignable Cette fonction ne cause en aucun cas d exception quelle que soit l erreur qui pourrait se produire lors de la v rification de joignabilit Cette version asynchrone n existe qu en Javascript Elle utilise une fonction de callback plut t qu une simple valeur de retour pour viter de bloquer la VM Javascript de Firefox qui n impl mente pas le passage de contr le entre threads durant les appels d entr e sortie bloquants Param tres callback fonction de callback qui sera appel e d s que le r sultat sera connu La fonction callback re oit trois arguments le contexte fourni par l appelant l objet module concern et le r sultat bool en context contexte fourni par l appelant et qui sera pass tel quel la fonction de callback Retourne rien du tout le r sultat sera pass en param tre la fonction de callback 174 www yoctopuce com 19 R f rence de l API de haut niveau module load YModule Met en cache les valeurs courantes du module avec une dur e de validit sp cifi e function load msValidity function load msValidity function load msValidity YRETCODE load int msValidity YRETCODE load int msValidity function load msValidity integer YRETCODE function load ByVal msValidity As Integer As YRETCODE YRETCODE load
89. Reboot Longint Longint v function triggerFirmwareUpdate As Integer int triggerFirmwareUpdate int secBeforeReboot int triggerFirmwareUpdate int secBeforeReboot def triggerFirmwareUpdate secBeforeReboot Y Module target triggerFirmwareUpdate secBeforeReboot Param tres secBeforeReboot nombre de secondes avant de red marrer Retourne YAPI_SUCCESS si l op ration se d roule sans erreur En cas d erreur d clenche une exception ou retourne un code d erreur n gatif 186 www yoctopuce com 19 R f rence de l API de haut niveau module wait_async YModule Attend que toutes les commandes asynchrones en cours d ex cution sur le module soient termin es et appelle le callback pass en param tre function wait_async callback context function wait_async callback context La fonction callback peut donc librement utiliser des fonctions synchrones ou asynchrones sans risquer de bloquer la machine virtuelle Javascript Param tres callback fonction de callback qui sera appel e d s que toutes les commandes en cours d ex cution sur le module seront termin es La fonction callback re oit deux arguments le contexte fourni par l appelant et l objet fonction concern context contexte fourni par l appelant et qui sera pass tel quel la fonction de callback Retourne rien du tout www yoctopuce com 187 19 R f rence de l API de haut niveau 19 3 Interface de
90. SUCCESS si l op ration se d roule sans erreur En cas d erreur d clenche une exception ou retourne un code d erreur n gatif www yoctopuce com 241 19 R f rence de l API de haut niveau dualpower load_async YDualPower Met en cache les valeurs courantes du contr le d alimentation avec une dur e de validit sp cifi e function load_async msValidity callback context function load_async msValidity callback context Par d faut lorsqu on acc de un module tous les attributs des fonctions du module sont automatiquement mises en cache pour la dur e standard 5 ms Cette m thode peut tre utilis e pour marquer occasionellement les donn es cach es comme valides pour une plus longue p riode par exemple dans le but de r duire le trafic r seau Cette version asynchrone n existe qu en Javascript Elle utilise une fonction de callback plut t qu une simple valeur de retour pour viter de bloquer la machine virtuelle Javascript avec une attente active Param tres msValidity un entier correspondant la dur e de validit attribu e aux les param tres charg s en millisecondes callback fonction de callback qui sera appel e d s que le r sultat sera connu La fonction callback re oit trois arguments le contexte fourni par l appelant l objet fonction concern et le code d erreur ou YAPT_ SUCCESS context contexte fourni par l appelant et qui sera pass tel quel la f
91. VALUE INVALID etc Dans tous les cas la valeur retourn e sera du 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 YAPI SUCCESS si tout va bien et un code d erreur diff rent en cas d chec T 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 et errMessage Ce sont les m me informations qui auraient t associ es l exception si elles avaient t actives 48 www yoctopuce com 9 Utilisation du Yocto Servo en C Le C n est pas le langage le plus simple ma triser Pourtant si on prend soin se limiter aux fonctionnalit s essentielles c est un langage tout fait utilisable pour des petits programmes vite faits et qui a l avantage d tre tr s portable d un syst me d exploitation l autre Sous Windows tous les exemples et les mod les de projet sont test s avec Microsoft Visual Studio 2010 Express disponible gratuitement sur le site de Microsoft 1 Sous Mac OS X tous les exemples et les mod les de projet sont test s avec XCode 4 disponible sur l App
92. YAPI 138 Sources 85 Support s 111 T Test 9 triggerFirmwareUpdate YModule 185 U UnregisterHub YAPI 139 UpdateDeviceList YAPI 140 UpdateDeviceList_async YAPI 141 V Variateur 14 Virtual 97 111 Visual 63 71 VisualBasic 63 W wait_async YDualPower 247 wait_async YModule 186 wait_async YServo 218 Y YAPI 133 141 yCheckLogicalName 119 yDisableExceptions 120 YDualPower 221 247 yEnableExceptions 121 yEnableUSBHost 122 yFindDualPower 221 yFindModule 145 yFindServo 189 yFirstDualPower 222 yFirstModule 146 yFirstServo 190 yFreeAPI 123 yGetAPIVersion 124 yGetTickCount 125 yHandleEvents 126 ylnitAPI 127 YModule 145 186 Yocto Servo 19 27 31 39 49 57 63 71 79 85 91 97 yPreregisterHub 128 yRegisterDeviceArrivalCallback 129 yRegisterDeviceRemovalCallback 130 yRegisterHub 131 yRegisterHubDiscoveryCallback 133 yRegisterLogFunction 134 ySelectArchitecture 135 YServo 189 218 ySetDelegate 136 ySetTimeout 137 ySleep 138 yUnregisterHub 139 yUpdateDeviceList 140 yUpdateDeviceList_async 141
93. YServo YServo FirstServo YServo FirstServo def FirstServo Utiliser la fonction YServo nextServo pour it rer sur les autres servo Se es ee Retourne un pointeur sur un objet YServo correspondant le premier servo accessible en ligne ou null siiln ya pas de servo disponibles www yoctopuce com 191 19 R f rence de l API de haut niveau servo describe YServo Retourne un court texte d crivant le servo au format TYPE NAME SERIAL FUNCTIONID js function describe nodejs function describe function describe string describe NSString describe function describe string function describe As String string describe String describe def describe Plus pr cis ment TYPE correspond au type de fonction NAME correspond au nom utils lors du premier acc s a la fonction SERIAL correspond au num ro de s rie du module si le module est connect ou unresolved sinon et FUNCTIONID correspond l identifiant mat riel de la fonction si le module est connect Par exemple La methode va retourner Relay MyCustomName relayl RELAYLO1 123456 relayl1 si le module est d j connect ou Relay BadCustomeName relayl unresolved si le module n est pas d j connect Cette methode ne declenche aucune transaction USB ou TCP et peut donc tre utilis dans un debuggeur Retourne une cha
94. Yocto Servo Mode d emploi Table des mati res Wo lte De d Le M nn us ante erie 1 EN E Ode EE 2 1 2 Accessoires optionnels Fstop aa a anea e E pE it queues 3 2 Pr sentation E 5 2 1 Les 6lements COMMUNS Hassan mnt dinde einen 5 TREIE ele TE 6 Jy PRCMIGES DAS ege 9 3 1 1L0CAlISAtION idee deser etd ce eee tei fe eee ean eae ee 9 3 2 VESUOUIMOGUIGY Siren Shi usine Sante A E AANE 9 3 3 CONTIQUIATION 5 rester h E dees eee nie eerste 10 4 Montage et connectique oan cece cece estes eseesesneeseseeseseeseeaessseseesesuseneaeesteaeeass 13 AAS FIXATION seen een ane rene A ren reine 13 4 25 ELE 14 4 3 Utilisation d un variateur de mod lisme 14 4 4 Contraintes d alimentation par USB ss 15 5 Programmation concepts g n raux oo esssesseesseeseesseestesseesseeseesseesees 17 5 1 Paradigme de programmation sise 17 52 Le module lee GT ME 19 5 3 Interface de contr le du module is 19 5 4 Interface de contr le de l alimentation 20 5 5 Interface de la fonction Servo sisi 21 5 6 Quelle interface Native DLL ou Service ooo cece ccccceccccseceececeseeeeceeeesueeeeeeeueeeeeeeeeuaeeeeens 22 5 7 Programmation par o commencer iii 24 6 Utilisation du Yocto Servo en ligne de commande 27 BL Installation a ech ts SERA rente et nan etait nent et annales ten 27 6 2 Utilisation description g n rale is 27 6 3 Contr le de la fonction Servo AEN 28 6 4 Contr le de la partie module sisi 28 GB Sz Bun DE EE EEN 29 7
95. Yoctopuce et t l chargez le programme Virtual Hub Il est disponible pour Windows Linux et Mac OS X En temps normal le programme Virtual Hub sert de couche d abstraction pour les langages qui ne peuvent pas acc der aux couches mat rielles de votre ordinateur Mais il offre aussi une interface sommaire pour configurer vos modules et tester les fonctions de base on acc de cette interface l aide d un simple browser web Lancez le Virtual Hub en ligne de commande ouvrez votre browser pr f r et tapez l adresse http 127 0 0 1 4444 Vous devriez voir appara tre la liste des modules Yoctopuce raccord s votre ordinateur Logical Name Description Action VirtualHub configure view log file Yocto Servo configure 1 view log file beacon el Show device functions Liste des modules telle qu elle appara t dans votre browser 3 1 Localisation Il est alors possible de localiser physiquement chacun des modules affich s en cliquant sur le bouton beacon cela a pour effet de mettre la Yocto Led du module correspondant en mode balise elle se met alors clignoter ce qui permet de la localiser facilement Cela a aussi pour effet d afficher une petite pastille bleue l cran Vous obtiendrez le m me comportement en appuyant sur le Yocto bouton d un module 3 2 Test du module La premi re chose v rifier est le bon fonctionnement de votre module cliquez sur le num ro de s rie correspondant v
96. _beacon module beacon Retourne l tat de la balise de localisation _is function get_beacon node js function get_beacon php _ function get_beacon Y_BEACON_enum get_beacon Y_BEACON_enum beacon pas function get_beacon Integer function get_beacon As Integer int get_beacon int get_beacon def get_beacon YModule target get_beacon Retourne soit Y_BEACON_OFF soit Y_BEACON_ON selon l tat de la balise de localisation En cas d erreur d clenche une exception ou retourne Y_BEACON_INVALID YModule 154 www yoctopuce com 19 R f rence de l API de haut niveau module get_errorMessage YModule module errorMessage Retourne le message correspondant la derni re erreur survenue lors de l utilisation de l objet module function get_errorMessage function get_errorMessage function get_errorMessage string get_errorMessage NSString errorMessage function get_errorMessage string function get_errorMessage As String string get_errorMessage String get_errorMessage def get_errorMessage Cette m thode est principalement utile lorsque la librairie Yoctopuce est utilis e en d sactivant la gestion des exceptions Retourne une chaine de caract res correspondant au message de la derni re erreur qui s est produit lors de l utilisation du module www yoctopuce com 155 19 R f rence de l API de haut niveau mod
97. a votre plateforme OS dans le r pertoire de votre choix Ajoutez ventuellement ce r pertoire a votre variable environnement PATH pour avoir acc s aux ex cutables depuis n importe ou C est tout il ne vous reste plus qu brancher votre Yocto Servo ouvrir un shell et commencer travailler en tapant par exemple YServo any move 1000 2000 Sous Linux pour utiliser l API en ligne de commande vous devez soit tre root soit d finir une r gle udev pour votre syst me Vous trouverez plus de d tails au chapitre Probl mes courants 6 2 Utilisation description g n rale Tous les ex cutables de la l API en ligne de commande fonctionnent sur le m me principe ils doivent tre appel s de la mani re suivante Executable options cible commande param tres Les options g rent le fonctionnement global des commandes elles permettent par exemple de piloter des modules distance travers le r seau ou encore elles peuvent forcer les modules sauver leur configuration apr s l ex cution de la commande La cible est le nom du module ou de la fonction auquel la commande va s appliquer Certaines commandes tr s g n riques n ont pas besoin de cible Vous pouvez aussi utiliser les alias any ou all ou encore une liste de noms s par s par des virgules sans espace 1 Si vous souhaitez recompiler l API en ligne de commande vous aurez aussi besoin de l API C 2 http www yoctopuce com FR libraries php www yo
98. ages courants dans la m moire non volatile du module function saveToFlash function saveToFlash function saveToFlash cpp nt saveToFlash int saveToFlash pas function saveToFlash Longint vb function saveToFlash As Integer oe Int saveToFlash java int saveToFlash def saveToFlash YModule target saveToFlash YModule Attention le nombre total de sauvegardes possibles durant la vie du module est limit environ 100000 cycles N appelez pas cette fonction dans une boucle Retourne YAPI_SUCCESS si l op ration se d roule sans erreur En cas d erreur d clenche une exception ou retourne un code d erreur n gatif 180 www yoctopuce com 19 R f rence de l API de haut niveau module gt set_beacon module setBeacon Allume ou teint la balise de localisation du module function set_beacon newval function set_beacon newval function set_beacon newval int set_beacon Y_BEACON_enum newval int setBeacon Y_BEACON_enum newval function set_beacon newval Integer integer function set_beacon ByVal newval As Integer As Integer int set_beacon int newval int set_beacon int newval def set_beacon newval YModule target set_beacon newval Param tres newval soit Y_BEACON_ OFF soit Y_BEACON_ ON Retourne YAPI_SUCCESS si l op ration se d roule sans erreur En cas d erreur d clenche une exception ou retourne un code d
99. aine de caract res correspondant au message de la derni re erreur qui s est produit lors de l utilisation du contr le d alimentation 226 www yoctopuce com 19 R f rence de l API de haut niveau dualpower get_errorType YDualPower dualpower errorType Retourne le code d erreur correspondant la derni re erreur survenue lors de l utilisation du contr le d alimentation function get_errorType function get_errorType function get_errorType YRETCODE get_errorType function get_errorType YRETCODE function get_errorType As YRETCODE YRETCODE get_errorType int get_errorType def get_errorType Cette m thode est principalement utile lorsque la librairie Yoctopuce est utilis e en d sactivant la gestion des exceptions Retourne un nombre correspondant au code de la derni re erreur qui s est produit lors de l utilisation du contr le d alimentation www yoctopuce com 227 19 R f rence de l API de haut niveau dualpower get_extVoltage YDualPower dualpower gt extVoltage Retourne la tension mesur e sur l alimentation de puissance externe en millivolts function get_extVoltage function get_extVoltage function get_extVoltage int get_extVoltage int extVoltage pas function get_extVoltage Longint v _ function get_extVoltage As Integer int get_extVoltage int get_extVoltage def get_extVoltage YDualPower targ
100. aire abstraction de la gestion des erreurs Il y aura forc ment une occasion o un utilisateur aura d branch le p riph rique soit avant de lancer le programme soit m me en pleine op ration La librairie Yoctopuce est pr vue pour vous aider supporter ce genre de comportements mais votre code doit n anmoins tre fait pour se comporter au mieux pour interpr ter les erreurs signal es par la librairie La mani re la plus simple de contourner le probl me est celle que nous avons employ pour les petits exemples pr c dents de ce chapitre avant d acc der un module on v rifie qu il est en ligne avec la m thode isOnline et on suppose ensuite qu il va y rester pendant la fraction de seconde n cessaire ex cuter les lignes de code suivantes Ce n est pas parfait mais a peut suffire dans certains cas II faut toutefois tre conscient qu on ne peut pas totalement exclure une erreur se produisant apr s le isOnline qui pourrait faire planter le programme La seule mani re de l viter est d impl menter une des deux techniques de gestion des erreurs d crites ci dessous 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 e Si vo
101. ais d sallouer ces objets vous m me Ils seront d sallou s automatiquement par l API la fin de l application 13 1 Pr paration Connectez vous sur le site de Yoctopuce et t l chargez la la librairie Yoctopuce pour Delphi D compressez le tout dans le r pertoire de votre choix et ajoutez le sous r pertoire sources de l archive dans la liste des r pertoires des librairies de Delphi Par d faut la librairie Yoctopuce pour Delphi utilise une DLL yapi di toutes les applications que vous cr erez avec Delphi devront avoir acc s cette DLL Le plus simple est de faire en sorte qu elle soit pr sente dans le m me r pertoire que l ex cutable de votre application 13 2 Contr le de la fonction Servo Lancez votre environnement Delphi copiez la DLL yapi dil dans un r pertoire et cr ez une nouvelle application console dans ce m me r pertoire et copiez coller le code ci dessous program helloworld SAPPTYPE CONSOLE uses 1 En fait Borland a diffus des versions gratuites pour usage personnel de Delphi 2006 et Delphi 2007 en cherchant un peu sur internet il est encore possible de les t l charger Les librairies Delphi sont r guli rement test es avec Delphi 5 et Delphi XE2 3 www yoctopuce com FR libraries php 4 Utilisez le menu outils options d environement www yoctopuce com 79 13 Utilisation du Yocto Servo en Delphi Ee yocto api yocto servo procedure Eet var execname string beg
102. ajouter une r gle vous aurez besoin d avoir un acc s root sur le syst me Dans le r pertoire udev_ conf de l archive du Virtua Hub pour Linux vous trouverez deux exemples de r gles qui vous viterons de devoir partir de rien Exemple 1 51 yoctopuce rules Cette r gle va autoriser tous les utilisateurs acc der en lecture et en criture aux p riph riques Yoctopuce USB Les droits d acc s pour tous les autres p riph riques ne seront pas modifi s Si ce sc nario vous convient il suffit de copier le fichier 51 yoctopuce all rules dans le r pertoire etc udev rules d et de red marrer votre syst me udev rules to allow write access to all users for Yoctopuce USB devices SUBSYSTEM usb ATTR idVendor 24e0 MODE 0666 Exemple 2 51 yoctopuce_group rules Cette r gle va autoriser le groupe yoctogroup a acc der en lecture et criture aux p riph riques Yoctopuce USB Les droits d acc s pour tous les autres p riph riques ne seront pas modifi s Si ce 1 http www yoctopuce com EN virtualhub php www yoctopuce com 249 20 Probl mes courants sc nario vous convient il suffit de copier le fichier 51 yoctopuce group rules dans le r pertoire etc udev rules d et de red marrer votre syst me udev rules to allow write access to all users of yoctogroup for Yoctopuce USB devices SUBSYSTEM usb ATTR idVendor 24e0 MODE 0664 GROUP yoctogroup 20 2 Plateformes ARM HF et EL
103. allback est enregistr le callback sera appel pour chacun de ces modules d j branch s D clenchement des callbacks Un probl me classique de la programmation par callbacks est que ces callbacks peuvent tre appel s n importe quand y compris des moments o le programme principal n est pas pr t les recevoir ce qui peut avoir des effets de bords ind sirables comme des dead locks et autres conditions de course C est pourquoi dans l API Yoctopuce les callbacks d arriv e d parts de modules ne sont appel s que pendant l ex cution de la fonction UpdateDeviceList Il vous suffit d appeler UpdateDeviceList intervalle r gulier depuis un timer ou un thread sp cifique pour controller pr cis ment quand les appels ces callbacks auront lieu boucle d attente g rant les callback while true callback d arriv e d part de modules YAPI UpdateDeviceList ref errmsg attente non active g rant les autres callbacks YAPI Sleep 500 ref errmsg De mani re similaire il est possible d avoir un callback quand un module est d branch 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 Attention dans la plupart des langages les callbacks doivent tre des proc dures globales et non pas des m thodes Si vous souhaitez que le callback appelle une m thode d un
104. alpower set_logicalName newval Modifie le nom logique du contr le d alimentation dualpower set_powerControl newval Modifie le mode d alimentation choisi pour les fonctions du module consommant beaucoup de courant dualpower set_userData data Enregistre un contexte libre dans l attribut userData de la fonction afin de le retrouver plus tard l aide de la m thode get_userData dualpower wait_async callback context Attend que toutes les commandes asynchrones en cours d ex cution sur le module soient termin es et appelle le callback pass en param tre www yoctopuce com 221 19 R f rence de l API de haut niveau YDualPower FindDualPower YDualPower yFindDualPower Permet de retrouver un contr le d alimentation d apr s un identifiant donn function yFindDualPower func node js function FindDualPower func function yFindDualPower func YDualPower yFindDualPower const string amp func YDualPower yFindDualPower NSString func function yFindDualPower func string TYDualPower function yFindDualPower ByVal func As String As YDualPower Y DualPower FindDualPower string func YDualPower FindDualPower String func def FindDualPower func L identifiant peut tre sp cifi sous plusieurs formes e NomLogiqueFonction e NoSerieModule dentifiantFonction e NoSerieModule NomLogiqueFonction e NomLogiqueModule ldentifiantMat riel e NomLogiqueModule NomLogiqueFonction Cett
105. ame newval Change le nom logique du module module set_luminosity newval Modifie la luminosit des leds informatives du module module set_usbBandwidth newval Modifie le nombre d interface USB utilis par le module module gt set_userData data Enregistre un contexte libre dans l attribut userData de la fonction afin de le retrouver plus tard l aide de la m thode get_userData module triggerFirmwareUpdate secBeforeReboot Agende un red marrage du module en mode sp cial de reprogrammation du logiciel embarqu module wait_async callback context Attend que toutes les commandes asynchrones en cours d ex cution sur le module soient termin es et appelle le callback pass en param tre www yoctopuce com 145 19 R f rence de l API de haut niveau YModule FindModule YModule yFindModule Permet de retrouver un module d apr s son num ro de s rie ou son nom logique function yFindModule func node js function FindModule func function yFindModule func YModule yFindModule string func YModule yFindModule NSString func function yFindModule func string TYModule function yFindModule ByVal func As String As YModule Y Module FindModule string func java YModule FindModule String func def FindModule func Cette fonction n exige pas que le module soit en ligne au moment ou elle est appel e l objet retourn sera n anmoins valide Utiliser la m thode YMod
106. antit que la sauvegarde des r glages se passera correctement Cette limite li e la technologie employ e par le micro processeur du module se situe aux alentour de 100000 cycles Pour r sumer vous ne pouvez employer la fonction YModule saveToFlash que 100000 fois au cours de la vie du module Veillez donc ne pas appeler cette fonction depuis l int rieur d une boucle Enumeration des modules Obtenir la liste des modules connect s se fait a l aide de la fonction YModule yFirstModule qui renvoie le premier module trouv il suffit ensuite d appeler la m thode nextModule de cet objet pour trouver les modules suivants et ce tant que la r ponse n est pas un null Ci dessous un petit exemple listant les module connect s using System Using Systeme Collections Generic using System Ling using System Text namespace ConsoleApplicationl class Program static void Main string args i YModule m string errmsg if YAPI RegisterHub usb ref errmsg YAPI SUCCESS Console WriteLine RegisterHub error errmsg Environment Exit 0 Console WriteLine Device list m YModule FirstModule while m null1 onsolenwe rEeininer miGetesericluNumber ONE EE DEE EN ame m m nextModule F 12 5 Gestion des erreurs Lorsque vous impl mentez un programme qui doit interagir avec des modules USB vous ne pouvez pas faire abstraction de la gestion des erreurs Il y aura forc ment une oc
107. au connecteur d alimentation externe sera directement transmise aux servos Cela signifie que si vous appliquez du 5V les servos seront aliment s en 5V si vous appliquer du 6V les servos seront aliment s en 6V V rifiez que vous utiliser une tension compatible avec vos servos Le module supporte quatre modes d alimentation Eteint Dans ce mode La logique du module fonctionne mais les servos ne sont tout simplement pas aliment s et ne peuvent pas fonctionner USB De ce mode les servos ne sont aliment s que par le port USB cela signifie qu il ne dispose que de 500mA si on d cide de se conformer aux sp cification USBs 2A si on est un peu joueur Dans tout les cas c est tr s peu pour un servo mais largement suffisant pour contr ler un variateur par exemple Rapellez vous que si port USB se voit d biter plus de 2 amp res soit l ordinateur qui le contr le est bien con u et il d sactivera le port en question soit il ne l est pas et l lectronique de contr le du port risque de griller En pratique cela signifie si votre module Yocto Servo n est aliment que par USB vous ne pourrez probablement pas faire fonctionner plusieurs servos la fois sous peine de voir le module de d connecter Il est difficile de pr voir avec certitude comment se comportera votre module avec plusieurs servos s il n est aliment que par USB car cela d pend la fois du mod le de servo et de l alimentation USB de votre ordinateur Le plus s
108. b r seau ou un VirtualHub est d tect sur le r seau local void RegisterHubDiscoveryCallback NewHubCallback callback Param tres callback Une proc dure qui prend en param tre deux cha ne de caract res ou null 134 www yoctopuce com 19 R f rence de l API de haut niveau YAPI RegisterLogFunction YAPI yRegisterLogFunction Enregistre une fonction de callback qui sera appell e a chaque fois que l API a quelque chose a dire void yRegisterLogFunction yLogFunction logfun void yRegisterLogFunction yLogCallback logfun procedure yRegisterLogFunction logfun yLogFunc procedure yRegisterLogFunction ByVal logfun As yLogFunc void RegisterLogFunction yLogFunc logfun void RegisterLogFunction LogCallback logfun def RegisterLogFunction logfun Utile pour d bugger le fonctionnement de l API Param tres logfun une procedure qui prend une cha ne de caract re en param tre www yoctopuce com 135 19 R f rence de l API de haut niveau YAPI SelectArchitecture YAPI ySelectArchitecture S lectionne manuellement l architecture de la libraire dynamique a utiliser pour acc der a USB def SelectArchitecture arch Par d faut la libraire Python d tecte automatiquement la version de la libraire dynamique utiliser pour acc der au port USB Sous Linux ARM il n est pas possible de d tecter de mani re fiable si il s agit d une installation Soft float armel ou Hard floa
109. bCurrent mA Writeln Logs S H Writeln module get lastlogs Writeln Writeln r refresh b beacon ON space beacon off end else Writeln Module not connected check identification and USB cable end www yoctopuce com 81 13 Utilisation du Yocto Servo en Delphi procedure beacon module Tymodule state integer begin module set_beacon state refresh module end var module TYModule E enay errmsg string begin Setup the API to use local USB devices if yRegisterHub usb errmsg lt gt YAPI SUCCESS then begin Write RegisterHub error errmsg exit end module yFindModule serial refresh module repedt read c case of r refresh module b beacon module Y BEACON ON Ir beacon module Y BEACON OFF end Cnt a a end Chaque propri t xxx du module peut tre lue grace une m thode du type get_xxxx et les propri t s qui se sont pas en lecture seule peuvent tre modifi es l aide de la m thode set xxx Pour plus de d tails concernant ces fonctions utilis es reportez vous aux chapitre API Modifications des r glages du module Lorsque que vous souhaitez modifier les r glages d un module il suffit d appeler la fonction set _xxx correspondante cependant cette modification n a lieu que dans la m moire vive du module si le module red marre les modifications seront perdues Pour qu elle soient m moris es de mani
110. back ne soient pas appel s trop tard Pour d sactiver un callback il suffit d appeler cette m thode en lui passant un pointeur nul Param tres callback la fonction de callback rappeler ou un pointeur nul La fonction de callback doit accepter deux arguments l object fonction dont la valeur a chang et la cha ne de caract re d crivant la nouvelle valeur publi e www yoctopuce com 213 19 R f rence de l API de haut niveau servo set_logicalName YServo servo setLogicalName Modifie le nom logique du servo function set_logicalName newval function set_logicalName newval function set_logicalName newval int set_logicalName const string amp newval int setLogicalName NSString newval function set_logicalName newval string integer function set_logicalName ByVal newval As String As Integer int set_logicalName string newval int set_logicalName String newval def set_logicalName newval YServo target set_logicalName newval Vous pouvez utiliser yCheckLogicalName pour v rifier si votre param tre est valide N oubliez pas d appeler la m thode saveToFlash du module si le r glage doit tre pr serv Param tres newval une cha ne de caract res repr sentant le nom logique du servo Retourne YAPI_ SUCCESS si l appel se d roule sans erreur En cas d erreur d clenche une exception ou retourne un code d erreur n gatif 214 www yoctopuce com 19 R
111. bjet YModu le correspondant au module Yoctopuce qui h berge la fonction dualpower get module async callback context Retourne l objet YModu le correspondant au module Yoctopuce qui h berge la fonction dualpower get_powerControl Retourne le mode d alimentation choisi pour les fonctions du module consommant beaucoup de courant dualpower get_powerState Retourne la source d alimentation active pour les fonctions du module consommant beaucoup de courant dualpower get_userData Retourne le contenu de l attribut userData pr c demment stock l aide de la m thode set_userData dualpower isOnline V rifie si le module h bergeant le contr le d alimentation est joignable sans d clencher d erreur dualpower isOnline async callback context V rifie si le module h bergeant le contr le d alimentation est joignable sans d clencher d erreur dualpower load msValidity Met en cache les valeurs courantes du contr le d alimentation avec une dur e de validit sp cifi e dualpower load_async msValidity callback context Met en cache les valeurs courantes du contr le d alimentation avec une dur e de validit sp cifi e dualpower nextDualPower Continue l num ration des contr les d alimentation commenc e l aide de yFirstDualPower dualpower registerValueCallback callback Enregistre la fonction de callback qui est appel e a chaque changement de la valeur publi e du
112. blanc rouge Noir JR Hitec Graupner orange rouge Marron 4 3 Utilisation d un variateur de mod lisme Vous pouvez parfaitement utiliser le module Yocto Servo pour piloter un variateur de moteur mais cela n cessite une petite pr caution La plupart des variateurs utilis s en mod lisme sont pr vus pour alimenter le r cepteur par l interm diaire du fil rouge Si vous branchez un variateur sur le module Yocto Servo vous devez imp rativement couper ce fil il n est pas du tout souhaitable que le variateur injecte du courant dans le module par l interm diaire des connecteurs de servos En revanche vous pouvez parfaitement raccorder ce fil rouge au pole positif du connecteur d alimentation externe le variateur servira alors d alimentation externe Si vous d sirez piloter un variateur le fil rouge doit soit tre coup soit tre utilis comme alimentation externe 14 www yoctopuce com 4 Montage et connectique 4 4 Contraintes d alimentation par USB Bien que USB signifie Universal Serial BUS les p riph riques USB ne sont pas organis s physiquement en bus mais en arbre avec des connections point point Cela a des cons quences en termes de distribution lectrique en simplifiant chaque port USB doit alimenter lectriquement tous les p riph riques qui lui sont directement ou indirectement connect s Et USB impose des limites En th orie un port USB fournit 100mA et peut lui fournir sa guise jusqu 5
113. buffer de 255 caract res pour r cup rer un ventuel message d erreur Voici un programme d exemple crit en pascal qui utilise la DLL yapi dil pour lister les modules connect s device description structure type yDeviceSt packed record vendorid gt word deviceid word devrelease Word nbinbterfaces DA sr manufacturer Eeer ile sil egener productname Kee Ek oe ans echar serial GE Me ily wae amns ehan logicalname Tarca TO TO INC ans eha firmware Tarca TOC 2 NC ansieae beacon OV end Dili FUOCO Limp Ome function yapilnitAPI mode integer errmsg pansichar integer cdecl external yapi dill name yapiInitAPI function yapiUpdateDeviceList force integer errmsg pansichar integer cdecl external yapi dill name yaplUpdateDevicelist function yapiGetAllDevices buffer pointer Mess Eze EE EE Vasmmeededsizertneeger errmsg pansi chani integer a cdecls external yapi dilil name yapiGetAllDevices www yoctopuce com 115 18 Utilisation avec des langages non support s function apiGetDevicelnfo d integer var infos yDevicest errmsg pansichar integer cdecl external yapi dill name yapilGetDevicelInto var errmsgBuffer array 0 256 of ansichar dataBuffer Elle EE max of 128 USB devices errmsg data T panstenat neededsize i integer devinfos yDevicest begin errmsg CerrmsgBuffer API initialisation if yapiInitAPI 1 errmsg lt 0 then begin write
114. casion o un utilisateur aura d branch le p riph rique soit avant de lancer le programme soit m me en pleine op ration La librairie Yoctopuce est pr vue pour vous aider supporter ce genre de comportements mais votre code doit n anmoins tre fait pour se comporter au mieux pour interpr ter les erreurs signal es par la librairie La mani re la plus simple de contourner le probl me est celle que nous avons employ pour les petits exemples pr c dents de ce chapitre avant d acc der un module on v rifie qu il est en ligne avec la m thode isOnline et on suppose ensuite qu il va y rester pendant la fraction de seconde n cessaire ex cuter les lignes de code suivantes Ce n est pas parfait mais a peut suffire dans certains cas Il faut toutefois tre conscient qu on ne peut pas totalement exclure une erreur se produisant apr s le isOnline qui pourrait faire planter le programme La seule 76 www yoctopuce com 12 Utilisation du Yocto Servo en C mani re de l viter est d impl menter une des deux techniques de gestion des erreurs d crites ci dessous 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 e Si v
115. ce com 19 R f rence de l API de haut niveau YAPI UpdateDeviceList YAPI yUpdateDeviceList Force une mise a jour de la liste des modules Yoctopuce connect s function yUpdateDeviceList errmsg function UpdateDeviceList errmsg function yUpdateDeviceList amp errmsg YRETCODE yUpdateDeviceList string amp errmsg YRETCODE yUpdateDeviceList NSError errmsg function yUpdateDeviceList var errmsg string integer function yUpdateDeviceList ByRef errmsg As String As YRETCODE YRETCODE UpdateDeviceList ref string errmsg int UpdateDeviceList def UpdateDeviceList errmsg None La librairie va v rifier sur les machines ou ports USB pr c demment enregistr s en utilisant la fonction yRegisterHub si un module a t connect ou d connect et le cas ch ant appeler les fonctions de callback d finies par l utilisateur Cette fonction peut tre appel e aussi souvent que d sir afin de rendre l application r active aux v nements de hot plug gt Param tres errmsg une cha ne de caract res pass e par r f rence dans laquelle sera stock un ventuel message d erreur Retourne YAPI_SUCCESS si l op ration se d roule sans erreur En cas d erreur d clenche une exception ou retourne un code d erreur n gatif www yoctopuce com 141 19 R f rence de l API de haut niveau YAPI UpdateDeviceList_async YAPI yUpdateDeviceList_async Force une mise a jour de
116. ch renge bereit A iON ar eener System EE MUSE current EE GE System out println logs n module get lastLogs catch YAPI Exception ex System out printin args 1 not connected check identification and USB cable MAP EE Chaque propri t xxx du module peut tre lue gr ce une m thode du type YModule get xxxx et les propri t s qui se sont pas en lecture seule peuvent tre modifi es l aide de la m thode YModule set xxx Pour plus de d tails concernant ces fonctions utilis es reportez vous aux chapitre API Modifications des r glages du module Lorsque que vous souhaitez modifier les r glages d un module il suffit d appeler la fonction YModule set xxx correspondante cependant cette modification n a lieu que dans la m moire vive du module si le module red marre les modifications seront perdues Pour qu elle soient m moris es de mani re persistante il est n cessaire de demander au module de sauvegarder sa configuration courante dans sa m moire non volatile Pour cela il faut utiliser la m thode YModule saveToFlash Inversement il est possible de forcer le module oublier ses r glages courants en utilisant la m thode YModule revertFromFlash Ce petit exemple ci dessous vous permet changer le nom logique d un module import com yoctopuce YoctoAPI public class Demo public static void main String args cry 4 setup the API to use local VirtualHub YAPI RegisterHub
117. connexion suppl mentaire Le module est capable de mesurer la tension fournie par l alimention externe et de la couper automatiquement s il d tecte que sa tension devient trop basse Ce manuel d crit essentiellement comment piloter des servo moteurs de mod lisme avec votre module Yocto Servo mais il va de soit que vous pouvez parfaitement utiliser votre module pour piloter d autres dispositifs couramment utilis s en mod lisme comme des variateurs de vitesse des contr leurs de lumi res etc Le module Yocto Servo Yoctopuce vous remercie d avoir fait l acquisition de ce Yocto Servo et esp re sinc rement qu il vous donnera enti re satisfaction Les ing nieurs Yoctopuce se sont donn s beaucoup de mal pour que votre Yocto Servo soit facile installer n importe o et soit facile piloter depuis un maximum de langages de programmation N anmoins si ce module venait vous d cevoir n h sitez pas contacter le support Yoctopuce Par design tous les modules Yoctopuce se pilotent de la m me fa on c est pourquoi les documentations des modules de la gamme sont tr s semblables Si vous avez d j pluch la documentation d un autre module Yoctopuce vous pouvez directement sauter la description des fonctions du module 1 support yoctopuce com www yoctopuce com 1 Introduction 1 1 Pr requis Pour pouvoir profiter pleinement de votre module Yocto Servo vous devriez disposer des l ments suivants
118. criptor YServo 196 get_functionid YDualPower 230 get_functionid YServo 197 get_hardwareld YDualPower 231 get_hardwareld YModule 157 get_hardwareld YServo 198 get_icon2d YModule 158 get_lastLogs YModule 159 get_logicalName YDualPower 232 get_logicalName YModule 160 get_logicalName YServo 199 get_luminosity YModule 161 get_ module YDualPower 233 get_ module YServo 200 get module async YDualPower 234 get module async YServo 201 get_neutral YServo 202 get_persistentSettings YModule 162 get_position YServo 203 get_powerControl YDualPower 235 get_powerState YDualPower 236 get_productld YModule 163 get_productName YModule 164 get_productRelease YModule 165 get_range YServo 204 get_rebootCountdown YModule 166 get_serialNumber YModule 167 get_upTime YModule 168 get_usbBandwidth YModule 169 get_usbCurrent YModule 170 get_userData YDualPower 237 get_userData YModule 171 get_userData YServo 205 GetAPIVersion YAPI 124 GetTickCount YAPI 125 H HandleEvents YAPI 126 HTTP 44 111 Hub 97 InitAPI YAPI 127 Installation 27 63 71 Int gration 54 Interface 143 188 220 Introduction 1 isOnline YDualPower 238 isOnline YModule 172 isOnline YServo 206 isOnline_async YDualPower 239 isOnline_async YModule 173 isOnline_async YServo 207 J Java 91 Javascript 31 L Langages 111 Librairie 54 85 116 Librairies 113 Limitations 29 Linux 249 load YDualPower 240 load YModule 174
119. cto Servo avec le num ros de s rie SERVORC1 123456 que vous auriez appel MonModule et dont vous auriez nomm la fonction servo1 MaFonction les cinq appels suivants seront strictement quivalents pour autant que MaFonction ne soit d finie qu une fois pour viter toute ambigu t var servo yFindServo SERVORC1 123456 servol var servo yFindServo SERVORC1 123456 MaFonction var servo yFindServo MonModule servol var servo yFindServo MonModule MaFonction var servo yFindServo MaFonction lt yFindServo renvoie un objet que vous pouvez ensuite utiliser loisir pour contr ler le servo isOnline La m thode isOnline de l objet renvoy par yFindServo permet de savoir si le module correspondant est pr sent et en tat de marche set_position La m thode set position de l objet renvoy par yFindServo permet de d placer le plus rapidement possible le servo vers la position sp cifi e Le point milieu correspond la valeur 0 et les deux extr mit s correspondent aux valeurs 1000 et 1000 move La m thode move de l objet renvoy par yFindServo permet d effectuer le d placement vers une position d sir e en un intervalle de temps contr l sp cifi en millisecondes Un exemple r el Ouvrez votre diteur de texte pr f r recopiez le code ci dessous sauvez le dans le m me r pertoire que les fichiers de la librairie et ouvrez le avec votre browser favor
120. ctopuce com 27 6 Utilisation du Yocto Servo en ligne de commande La commande est la commande que l on souhaite ex cuter La quasi totalit des fonctions disponibles dans les API de programmation classiques sont disponibles sous forme de commandes Vous n tes pas oblig des respecter les minuscules majuscules et les caract res soulign s dans le nom de la commande Les param tres sont assez logiquement les param tres dont la commande a besoin A tout moment les ex cutables de l API en ligne de commande sont capables de fournir une aide assez d taill e Utilisez par exemple executable help pour conna tre la liste de commandes disponibles pour un ex cutable particulier de l API en ligne de commande ou encore executable commande help Pour obtenir une description d taill e des param tres d une commande 6 3 Contr le de la fonction Servo Pour contr ler la fonction Servo de votre Yocto Servo vous avez besoin de l ex cutable YServo Vous pouvez par exemple lancer YServo any move 1000 2000 Cet exemple utilise la cible any pour signifier que l on d sire travailler sur la premi re fonction Servo trouv e parmi toutes celles disponibles sur les modules Yoctopuce accessibles au moment de l ex cution Cela vous vite d avoir conna tre le nom exact de votre fonction et celui de votre module Mais vous pouvez tout aussi bien utiliser des noms logiques que vous auriez pr alablement configur s Imagi
121. dans le debugger vous pourrez relativement facilement d terminer o le probl me s est produit et voir le message explicatif li l exception e 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 chaque ligne de code Il suffit d appeler la fonction yDisableExceptions pour commuter la librairie dans un mode ou les exceptions de 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 logique une m thode get state retournera une valeur Y STATE INVALID une m thode get currentValue retournera une valeur Y CURRENTVALUE INVALID etc Dans tous les cas la valeur retourn e sera du 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 YAPI SUCCESS si tout va bien et un code d erreur diff rent en cas d chec
122. de de la m thode set_userData function get_userData function get_userData function get_userData void get_userData void userData function get_userData Tobject function get_userData As Object object get_userData Object get_userData def get_userData Cet attribut n es pas utilis directement par l API Il est la disposition de l appelant pour stocker un contexte Retourne l objet stock pr c demment par l appelant 172 www yoctopuce com 19 R f rence de l API de haut niveau module isOnline V rifie si le module est joignable sans d clencher d erreur function isOnline node js function isOnline function isOnline bool isOnline BOOL isOnline function isOnline boolean function isOnline As Boolean bool isOnline boolean isOnline def isOnline YModule Si les valeurs des attributs du module en cache sont valides au moment de l appel le module est consid r joignable Cette fonction ne cause en aucun cas d exception quelle que soit l erreur qui pourrait se produire lors de la v rification de joignabilit Retourne true sile module est joignable false sinon www yoctopuce com 173 19 R f rence de l API de haut niveau module isOnline asynce YModule V rifie si le module est joignable sans d clencher d erreur _is function isOnline_async callback context node js function is
123. de millisecondes coul es depuis la mise sous tension du module module get_usbBandwidth Retourne le nombre d interface USB utilis par le module module get_usbCurrent Retourne le courant consomm par le module sur le bus USB en milliamp res module get_userData Retourne le contenu de l attribut userData pr c demment stock l aide de la m thode set_userData module gt isOnline V rifie si le module est joignable sans d clencher d erreur module isOnline_async callback context V rifie si le module est joignable sans d clencher d erreur module load msValidity Met en cache les valeurs courantes du module avec une dur e de validit sp cifi e module load_async msValidity callback context Met en cache les valeurs courantes du module avec une dur e de validit sp cifi e module nextModule Continue l num ration des modules commenc e l aide de yFirstModule module reboot secBeforeReboot Agende un simple red marrage du module dans un nombre donn de secondes module gt revertFromFlash Recharge les r glages stock s dans le m moire non volatile du module comme a la mise sous tension du module module saveToFlash Sauve les r glages courants dans la m moire non volatile du module module set_beacon newval 144 www yoctopuce com 19 R f rence de l API de haut niveau Allume ou teint la balise de localisation du module module set_logicalN
124. der sa configuration courante dans sa m moire non volatile Pour cela il faut utiliser la m thode YModule saveToFlash Inversement il est possible de forcer le module oublier ses r glages courants en utilisant la m thode YModule revertFromFlash Ce petit exemple ci dessous vous permet changer le nom logique d un module usr bin python CO CE Ce UT EE ees import os sys from yocto api import def usage sys exit usage demo lt serial or logical name gt lt new logical name gt if len sys argv 3 usage errmsg YRefParam if YAPI RegisterHub usb errmsg YAPI SUCCESS Sys erue UREGisterhulonem rains H EEA Er rms og m YModule FindModule sys argv 1 use serial or logical name Ee newname sys argv 2 if not YAPI CheckLogicalName newname sys exit Invalid name newname m set_logicalName newname m saveToFlash do not forget this print Moduler serial m get_serialNumber name m get_logicalName else sys exiit unor connected check identification and USB cable Attention le nombre de cycles d criture de la m moire non volatile du module est limit Pass cette limite plus rien ne garantit que la sauvegarde des r glages se passera correctement Cette limite li e la technologie employ e par le micro processeur du module se situe aux alentour de 100000 cycles Pour r sumer vous ne pouvez employer la fonction YModule saveToFlash que 100000
125. droid String hwid parent getltemAtPosition pos toString servo YServo FindServo hwid Override public void onNothingSelected AdapterView lt gt arg0 Called when the user touches the button State A public void updatePos View view if servo null TENTUNE SeekBar bar SeekBar findViewById R id seekBarPos int newpow bar getProgress 2000 bar getMax 1000 switch view getId case R id movePosButton try 4 servo move newpow 1000 catchy EE ronie e printStackTrace break case R id setPosButton bry servo set position newpow He Cale hia DEE eener 2 e printStackTrace break 16 6 Contr le de la partie module Chaque module peut tre contr l d une mani re similaire vous trouverez ci dessous un simple programme d exemple affichant les principaux param tres d un module et permettant d activer la balise de localisation package com yoctopuce doc examples import android app Activity import android os Bundle import android util Log import android view View import android widget AdapterView import android widget AdapterView OnItemSelectedListener import android widget ArrayAdapter import android widget Spinner import android widget Switch import android widget TextView import com yoctopuce YoctoAPI YAPI import com yoctopuce YoctoAPI YAPI Exception import com yoctopuce YoctoAPI YModule public class ModuleControl
126. e int productRelease pas function get_productRelease Longint v function get_productRelease As Integer int get_productRelease int get_productRelease def get_productRelease YModule target get_productRelease Retourne un entier repr sentant le num ro de version mat riel du module pr programm en usine En cas d erreur d clenche une exception ou retourne Y_PRODUCTRELEASE_INVALID 166 www yoctopuce com 19 R f rence de l API de haut niveau module get_rebootCountdown YModule module rebootCountdown Retourne le nombre de secondes restantes avant un red marrage du module ou z ro si aucun red marrage n a t agend function get_rebootCountdown function get_rebootCountdown function get_rebootCountdown int get_rebootCountdown int rebootCountdown function get_rebootCountdown Longint function get_rebootCountdown As Integer int get_rebootCountdown int get_rebootCountdown def get_rebootCountdown YModule target get_rebootCountdown Retourne un entier repr sentant le nombre de secondes restantes avant un red marrage du module ou z ro si aucun red marrage n a t agend En cas d erreur d clenche une exception ou retourne Y_REBOOTCOUNTDOWN_INVALID www yoctopuce com 167 19 R f rence de l API de haut niveau module gt get_serialNumber module serialNumber Retourne le num ro de s rie d
127. e string get_logicalName NSString logicalName function get_logicalName string function get_logicalName As String string get_logicalName String get_logicalName def get_logicalName YServo target get_logicalName Retourne une cha ne de caract res repr sentant le nom logique du servo En cas d erreur d clenche une exception ou retourne Y_LOGICALNAME_ INVALID 200 www yoctopuce com 19 R f rence de l API de haut niveau servo get_module YServo servo module Retourne l objet YModule correspondant au module Yoctopuce qui h berge la fonction function get_module function get_module function get_module YModule get_module YModule module function get_module TYModule function get_module As YModule YModule get_module YModule get_module def get_module Si la fonction ne peut tre trouv e sur aucun module l instance de YModule retourn e ne sera pas joignable Retourne une instance de YModule www yoctopuce com 201 19 R f rence de l API de haut niveau servo get_ module async YServo servo module async Retourne l objet YModule correspondant au module Yoctopuce qui h berge la fonction function get_module_async callback context function get_module_async callback context Si la fonction ne peut tre trouv e sur aucun module l instance de YModule retourn e ne sera pas joignable Cette version a
128. e text JavaScript gt Sh Setup the API to use the VirtualHub on local machine if yRegisterHub http 127 0 0 1 4444 VAPI SUCCESS alene MGannor contact Vireual Hub on 1270m Iti varn Hl SES function refresh Var Serial document gethilementByid serrall value if serial Iy f Detect any conected module suitable for the demo sl yFirstServo LESTO seriali si module kge sertalNumber document getElementById serial value serial sl yFindServo serial servol s5 yFindServo serial servos desm Onlinen i document getElementByidi msg value else document getElementBylId msg value Module not connected setTimeout refresh 500 function moveTo pos Show two different types of move siset IPOS ition POS Movie tas Fast as ess ible s5 move pos 3000 move in 3 seconds gt SERPET lt HEAD gt lt BODY onload refresh gt Module to use lt input id serial gt lt input id msg style color red border none readonly gt lt br gt lt a href javascript moveTo 1000 gt Move to position 1000 lt a gt lt br gt lt a href javascript moveTo 500 gt Move to position 500 lt a gt lt br gt lt a href javascript moveTo 0 gt Move to center position lt a gt lt br gt lt a href javascript moveTo 500 gt Move to position 500 lt a gt lt br gt lt a href javascript moveTo 1000 gt Move to p
129. e d appeler la mehode nextModule de cet objet pour trouver les modules suivants et ce tant que la r ponse n est pas un null Ci dessous un petit exemple listant les module connect s package com yoctopuce doc examples import android app Activity import android os Bundle import android view View import android widget LinearLayout import android widget TextView import com yoctopuce YoctoAPI YAPI import com yoctopuce YoctoAPI YAPI Exception import com yoctopuce YoctoAPI YModule public class Inventory extends Activity Override public void onCreate Bundle savedInstanceState super onCreate savedinstanceState setContentView R layout inventory public void refreshInventory View view LinearLayout layout LinearLayout findViewById R id inventoryList layout removeAl1Views Cry YAPI UpdateDeviceList YModule module YModule FirstModule while module null String line module get serialNumber module get productName RA TextView tx new TextView this tx setText line layout addView tx module module nextModule Luet MONEE ICG ett lt 2 er print stacktrace Override protected void onStart super ONsieaust i et SC YAPI EnableUSBHost this VAP Regusize shui iis a EE YAP TORx lt cepir one c prinestackiracel t refreshInventory null Override protected void onStop SUPEEONSitop i YAPI FreeAPI
130. e 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
131. e erreur l aide des m thodes errType et errMessage Ce sont les m me informations qui auraient t associ es l exception si elles avaient t actives 90 www yoctopuce com 15 Utilisation du Yocto Servo en Java Java est un langage orient objet d velopp par Sun Microsystem Son principal avantage est la portabilit mais cette portabilit a un co t Java fait une telle abstraction des couches mat rielles qu il est tr s difficile d interagir directement avec elles C est pourquoi l API java standard de Yoctopuce ne fonctionne pas en natif elle doit passer par l interm diaire d un VirtualHub pour pouvoir communiquer avec les modules Yoctopuce 15 1 Pr paration Connectez vous sur le site de Yoctopuce et t l chargez les l ments suivants e La librairie de programmation pour Java e Le programme VirtualHub pour Windows Mac OS X ou Linux selon l OS que vous utilisez La librairie est disponible en fichier sources mais elle aussi disponible sous la forme d un fichier jar Branchez vos modules D compressez les fichiers de la librairie dans un r pertoire de votre choix Lancez le programme VirtualHub et vous pouvez commencer vos premiers test Vous n avez pas besoin d installer de driver Afin de les garder simples tous les exemples fournis dans cette documentation sont des applications consoles Il va de soit que que le fonctionnement des librairies est strictement identiques si vous les int grez dans u
132. e execname any 1000 1000 System Threading Thread Sleep 2500 End End Sub Sub Main Dim argv As String System Environment GetCommandLineArgs Dim errmsg As String Dim target As String Dim servol As YServo Dim servo5 As YServo Dim pos As Integer If argv Length lt 3 Then Usage target argv 1 pos CInt argv 2 REM Setup the APT to use local USB devices EEy yRequsterhubi usb errmsg lt YAP ISUCEHSS Ce Console WriteLine RegisterHub error errmsg End End If Ei tanger Manya Then servol yFirstServo If servol Is Nothing Then Console WriteLine No module connected check USB cable ni End ENAR TE arger serye lets Module Gete NE 12i End TE servol yFindServo target servol servo5 yFindServo target servo5 If servol isOnline Then servol set position pos servo5 move pos 3000 Else Console WriteLine Module not connected check identification and USB cable End If www yoctopuce com 65 11 Utilisation du Yocto Servo en VisualBasic NET End Sub End Module 11 4 Contr le de la partie module Chaque module peut tre contr l d une mani re similaire vous trouverez ci dessous un simple programme d exemple affichant les principaux param tres d un module et permettant d activer la balise de localisation Imports System 10 Imports System Environment Module Modulel Sub usage Console WriteLine usage de
133. e fonction n exige pas que le contr le d alimentation soit en ligne au moment ou elle est appel e l objet retourn sera n anmoins valide Utiliser la m thode YDualPower isOnline pour tester si le contr le d alimentation est utilisable un moment donn En cas d ambigu t lorsqu on fait une recherche par nom logique aucune erreur ne sera notifi e la premi re instance trouv e sera renvoy e La recherche se fait d abord par nom mat riel puis par nom logique Param tres func une cha ne de caract res qui r f rence le contr le d alimentation sans ambigu t Retourne un objet de classe YDualPower qui permet ensuite de contr ler le contr le d alimentation 222 www yoctopuce com 19 R f rence de l API de haut niveau YDualPower FirstDualPower YDualPower yFirstDualPower Commence l num ration des contr les d alimentation accessibles par la librairie function yFirstDualPower function FirstDualPower function yFirstDualPower YDualPower yFirstDualPower YDualPower yFirstDualPower function yFirstDualPower TYDualPower function yFirstDualPower As YDualPower YDualPower FirstDualPower YDualPower FirstDualPower def FirstDualPower Utiliser la fonction YDualPower nextDualPower pour it rer sur les autres contr les d alimentation Retourne un pointeur sur un objet YDualPower correspondant le premier contr le d alimentation accessible en lig
134. e la librairie Yoctopuce est utilis e en d sactivant la gestion des exceptions Retourne une chaine de caract res correspondant au message de la derni re erreur qui s est produit lors de l utilisation du servo 194 www yoctopuce com 19 R f rence de l API de haut niveau servo get_errorType YServo servo errorType Retourne le code d erreur correspondant la derni re erreur survenue lors de l utilisation du servo function get_errorType function get_errorType function get_errorType YRETCODE get_errorType function get_errorType YRETCODE function get_errorType As YRETCODE YRETCODE get_errorType int get_errorType def get_errorType Cette m thode est principalement utile lorsque la librairie Yoctopuce est utilis e en d sactivant la gestion des exceptions Retourne un nombre correspondant au code de la derni re erreur qui s est produit lors de l utilisation du servo www yoctopuce com 195 19 R f rence de l API de haut niveau servo get_friendlyName YServo servo friendlyName Retourne un identifiant global du servo au format NOM_ MODULE NOM_FONCTION function get_friendlyName function get_friendlyName function get_friendlyName string get_friendlyName NSString friendlyName string get_friendlyName String get_friendlyName def get_friendlyName Le chaine retourn e utilise soit les noms logiques du module et du se
135. e le message correspondant a la derni re erreur survenue lors de l utilisation de l objet module module get_errorType Retourne le code d erreur correspondant la derni re erreur survenue lors de l utilisation de l objet module module get_firmwareRelease Retourne la version du logiciel embarqu du module module get_hardwareld Retourne l identifiant unique du module module get_icon2d www yoctopuce com 143 19 R f rence de l API de haut niveau Retourne l ic ne du module module get_lastLogs Retourne une chaine de charact re contenant les derniers logs du module module get_logicalName Retourne le nom logique du module module get_luminosity Retourne la luminosit des leds informatives du module valeur entre 0 et 100 module get_persistentSettings Retourne l tat courant des r glages persistents du module module get_productld Retourne l identifiant USB du module pr programm en usine module get_productName Retourne le nom commercial du module pr programm en usine module get_productRelease Retourne le num ro de version mat riel du module pr programm en usine module get_rebootCountdown Retourne le nombre de secondes restantes avant un red marrage du module ou z ro si aucun red marrage n a t agend module get_serialNumber Retourne le num ro de s rie du module pr programm en usine module get_upTime Retourne le numbre
136. e produit alors qu on essaie d acc der un module la librairie va lancer une exception Dans ce cas de trois choses l une e Si votre code attrape l exception au vol et la g re et tout se passe bien e 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 e 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 chaque ligne de code Il suffit d appeler la fonction yDisableExceptions pour commuter la librairie dans un mode o les exceptions de 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 logique une m thode get state retournera une valeur Y STATE INVALID une m thode get currentValue retournera une valeur Y CURRENTVALUE INVALID etc Dans tous les cas la valeur retourn e sera du 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
137. e texte mais en demandant whitePages xmli vous auriez obtenu le r sultat en XML De m me whitePages json aurait permis d obtenir le r sultat en JSON L extension html vous permet m me d afficher une interface sommaire vous permettant de changer les valeurs en direct Toute l API REST est disponible dans ces diff rents formats Contr le d un module par l interface REST Chaque module Yoctopuce a sa propre interface REST disponible sous diff rentes formes Imaginons un Yocto Servo avec le num ro de de s rie SERVORC1 12345 et le nom logique monModule l URL suivante permettra de conna tre l tat du module http 127 0 0 1 4444 bySerial SERVORC1 12345 api module txt Il est bien entendu possible d utiliser le nom logique des modules plut t que leur num ro de s rie http 127 0 0 1 4444 byName monModule api module txt Vous pouvez retrouver la valeur d une des propri t s d un module il suffit d ajouter le nom de la propri t en dessous de module Par exemple si vous souhaitez conna tre la luminosit des LEDs de signalisation il vous suffit de faire la requ te suivante http 127 0 0 1 4444 bySerial SERVORC1 12345 api module luminosity Pour modifier la valeur d une propri t il vous suffit de modifier l attribut correspondant Ainsi pour modifier la luminosit il vous suffit de faire la requ te suivante http 127 0 0 1 4444 bySerial SERVORC1 12345 api module luminosity 100 Contr le des diff rentes fonctions du
138. eCallback UpdateCallback callback def registerValueCallback callback Ce callback n est appel que durant l ex cution de ySleep o yHandleEvents Cela permet a l appelant de contr ler quand les callback peuvent se produire Il est important d appeler l une de ces deux fonctions p riodiquement pour garantir que les callback ne soient pas appel s trop tard Pour d sactiver un callback il suffit d appeler cette m thode en lui passant un pointeur nul Param tres callback la fonction de callback a rappeler ou un pointeur nul La fonction de callback doit accepter deux arguments l object fonction dont la valeur a chang et la cha ne de caract re d crivant la nouvelle valeur publi e 244 www yoctopuce com 19 R f rence de l API de haut niveau dualpower set_logicalName dualpower setLogicalName Modifie le nom logique du contr le d alimentation function set_logicalName newval function set_logicalName newval function set_logicalName newval int set_logicalName const string amp newval int setLogicalName NSString newval function set_logicalName newval string integer function set_logicalName ByVal newval As String As Integer int set_logicalName string newval int set_logicalName String newval def set_logicalName newval YDualPower target set_logicalName newval YDualPower Vous pouvez utiliser yCheckLogicalName pour v rifier si votre param tre est valide N oubl
139. envoie un objet que vous pouvez ensuite utiliser loisir pour contr ler le servo 4 Pensez a changer le filtre de la fen tre de s lection de fichiers sinon la DLL n appara tra pas 64 www yoctopuce com 11 Utilisation du Yocto Servo en VisualBasic NET isOnline La m thode isOnline de l objet renvoy par yFindServo permet de savoir si le module correspondant est pr sent et en tat de marche set_position La m thode set position de l objet renvoy par yFindServo permet de d placer le plus rapidement possible le servo vers la position sp cifi e Le point milieu correspond la valeur O et les deux extr mit s correspondent aux valeurs 1000 et 1000 move La m thode move de l objet renvoy par yFindServo permet d effectuer le d placement vers une position d sir e en un intervalle de temps contr l sp cifi en millisecondes Un exemple r el Lancez Microsoft VisualBasic et ouvrez le projet exemple correspondant fourni dans le r pertoire Examples Doc GettingStarted Yocto Servo de la librairie Yoctopuce Vous reconnaitrez dans cet exemple l utilisation des fonctions expliqu es ci dessus cette fois utilis es avec le d corum n cessaire en faire un petit programme d exemple concret Module Modulel Private Sub Usage Dim execname System AppDomain CurrentDomain FriendlyName Console WriteLine Usage Consolen i terinelezecnane Cette Egaal l E Console EE le E HEI Console WriteLin
140. epr sentant la plage d utilisation du servo en pourcents En cas d erreur d clenche une exception ou retourne un code d erreur n gatif www yoctopuce com 217 19 R f rence de l API de haut niveau servo set_userData YServo servo setUserData Enregistre un contexte libre dans l attribut userData de la fonction afin de le retrouver plus tard a l aide de la m thode get_userData function set_userData data function set_userData data function set_userData data void set_userData void data void setUserData void data procedure set_userData data Tobject procedure set_userData ByVal data As Object void set_userData object data void set_userData Object data def set_userData data Cet attribut n es pas utilis directement par l API Il est la disposition de l appelant pour stocker un contexte Param tres data objet quelconque m moriser 218 www yoctopuce com 19 R f rence de l API de haut niveau servo wait_async YServo Attend que toutes les commandes asynchrones en cours d ex cution sur le module soient termin es et appelle le callback pass en param tre function wait_async callback context function wait_async callback context La fonction callback peut donc librement utiliser des fonctions synchrones ou asynchrones sans risquer de bloquer la machine virtuelle Javascript Param tres callback fonction de callback qui sera
141. er facilement au niveau mat riel de la machine C est le cas de Javascript par exemple Pour g rer ce cas Yoctopuce offre la solution sous la forme d un petit programme appel Hub Virtuel qui lui est capable d acc der aux modules et votre application n a plus qu utiliser une librairie qui offrira toutes les fonctions n cessaires au contr le des modules en passant par l interm diaire de ce hub virtuel L utilisateur final se verra oblig de lancer le hub virtuel avant de lancer le programme de contr le du projet proprement dit moins qu il ne d cide d installer le hub sous la forme d un service d mon auquel cas le hub virtuel se lancera automatiquement au d marrage de la machine L application se connecte au virtual hub pour connecter le module En revanche la m thode de contr le par un service offre un avantage non n gligeable l application n est pas n oblig de tourner sur la machine o se trouvent les modules elle peut parfaitement se trouver sur un autre machine qui se connectera au service pour piloter les module De plus les librairie natives et DLL voqu es plus haut sont aussi capables de se connecter distance un ou plusieurs hub virtuels www yoctopuce com 23 5 Programmation concepts g n raux Lorsqu on utilise un hub virtuel l application de contr le n a plus besoin d tre sur la m me machine que le module Quel que soit langage de programmation choisi et le paradigme de contr le uti
142. erreur n gatif YModule www yoctopuce com 181 19 R f rence de l API de haut niveau module gt set_logicalName YModule module setLogicalName Change le nom logique du module function set_logicalName newval function set_logicalName newval function set_logicalName newval int set_logicalName const string amp newval int setLogicalName NSString newval function set_logicalName newval string integer function set_logicalName ByVal newval As String As Integer int set_logicalName string newval int set_logicalName String newval def set_logicalName newval YModule target set_logicalName newval Vous pouvez utiliser yCheckLogicalName pour v rifier si votre param tre est valide N oubliez pas d appeler la m thode saveToFlash du module si le r glage doit tre pr serv Param tres newval une cha ne de caract res Retourne YAPI_SUCCESS si l op ration se d roule sans erreur En cas d erreur d clenche une exception ou retourne un code d erreur n gatif 182 www yoctopuce com 19 R f rence de l API de haut niveau module set_luminosity YModule module setLuminosity Modifie la luminosit des leds informatives du module function set_luminosity newval function set_luminosity newval function set_luminosity newval int set_luminosity int newval int setLuminosity int newval function set_luminosity newval Longint intege
143. es 126 www yoctopuce com 19 R f rence de l API de haut niveau YAPI HandleEvents YAPI yHandleEvents Maintient la communication de la librairie avec les modules Yoctopuce function yHandleEvents errmsg function HandleEvents errmsg function yHandleEvents amp errmsg YRETCODE yHandleEvents string amp errmsg YRETCODE yHandleEvents NSError errmsg function yHandleEvents var errmsg string integer function yHandleEvents ByRef errmsg As String As YRETCODE YRETCODE HandleEvents ref string errmsg int HandleEvents def HandleEvents errmsg None Si votre programme inclut des longues boucles d attente vous pouvez y inclure un appel a cette fonction pour que la librairie prenne en charge les informations mise en attente par les modules sur les canaux de communication Ce n est pas strictement indispensable mais cela peut am liorer la r activit des la librairie pour les commandes suivantes Cette fonction peut signaler une erreur au cas la communication avec un module Yoctopuce ne se passerait pas comme attendu P Param tres errmsg une cha ne de caract res pass e par r f rence dans laquelle sera stock un ventuel message d erreur Retourne YAPI_SUCCESS si l op ration se d roule sans erreur En cas d erreur d clenche une exception ou retourne un code d erreur n gatif www yoctopuce com 127 19 R f rence de l API de haut niveau YAPL InitAPI
144. es produits Yoctopuce Notez que vous n aurez jamais allouer ou d sallouer un objet li l API Yoctopuce cela est g r automatiquement Il existe une classe par type de fonctionnalit Yoctopuce Le nom de ces classes commence toujours par un Y suivi du nom de la fonctionnalit par exemple YTemperature YRelay YPressure etc Il existe aussi une classe YModule d di e la gestion des modules en temps que tels et enfin il existe la classe statique YAPI qui supervise le fonctionnement global de l API et g re les communications bas niveau Gestion bas niveau Gestion des modules Gestion des fonctionalit s YAPI YModule YTemperature Y Pressure YRelay YXxx Structure de l API Yoctopuce www yoctopuce com 17 5 Programmation concepts g n raux 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 Servo 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 form
145. est possible que vous ayez reconstruire la structure de ces projets 11 2 Utilisation l API yoctopuce dans un projet Visual Basic La librairie Yoctopuce pour Visual Basic NET se pr sente sous la forme d une DLL et de fichiers sources en Visual Basic La DLL n est pas une DLL NET mais une DLL classique crite en C qui g re les communications bas niveau avec les modules Les fichiers sources en Visual Basic g rent la partie haut niveau de l API Vous avez donc besoin de cette DLL et des fichiers vb du r pertoire Sources pour cr er un projet g rant des modules Yoctopuce Configuration d un projet Visual Basic Les indications ci dessous sont fournies pour Visual Studio express 2010 mais la proc dure est semblable pour les autres versions Commencez par cr er votre projet puis depuis le panneau Explorateur de solutions effectuez un clic droit sur votre projet et choisissez Ajouter puis El ment existant Une fen tre de s lection de fichiers appara t s lectionnez le fichier yocto api vb et les fichiers correspondant aux fonctions des modules Yoctopuce que votre projet va g rer Dans le doute vous pouvez aussi s lectionner tous les fichiers 1 http www microsoft com visualstudio en us products 2010 editions visual basic express www yoctopuce com FR libraries php 3 Les sources de cette DLL sont disponibles dans l API C www yoctopuce com 63 11 Utilisation du Yocto Servo en VisualBasic NET Vous avez a
146. et get_extVoltage Retourne un entier repr sentant la tension mesur e sur l alimentation de puissance externe en millivolts En cas d erreur d clenche une exception ou retourne Y_EXTVOLTAGE_INVALID 228 www yoctopuce com 19 R f rence de l API de haut niveau dualpower get_friendlyName YDualPower dualpower friendlyName Retourne un identifiant global du contr le d alimentation au format NOM_MODULE NOM_FONCTION function get_friendlyName function get_friendlyName function get_friendlyName string get_friendlyName NSString friendlyName string get_friendlyName String get_friendlyName def get_friendlyName Le cha ne retourn e utilise soit les noms logiques du module et du contr le d alimentation si ils sont d finis soit respectivement le num ro de s rie du module et l identifant mat riel du contr le d alimentation par exemple MyCustomName relayl Retourne une cha ne de caract res identifiant le contr le d alimentation en utilisant les noms logiques ex MyCustomName relayl En cas d erreur d clenche une exception ou retourne Y_FRIENDLYNAME INVALID www yoctopuce com 229 19 R f rence de l API de haut niveau dualpower get_functionDescriptor YDualPower dualpower functionDescriptor Retourne un identifiant unique de type YFUN_DESCR correspondant la fonction function get_functionDescriptor functio
147. eur n gatif 246 www yoctopuce com 19 R f rence de l API de haut niveau dualpower set_userData YDualPower dualpower setUserData Enregistre un contexte libre dans l attribut userData de la fonction afin de le retrouver plus tard l aide de la m thode get_userData function set_userData data function set_userData data function set_userData data void set_userData void data void setUserData void data procedure set_userData data Tobject procedure set_userData ByVal data As Object void set_userData object data void set_userData Object data def set_userData data Cet attribut n es pas utilis directement par l API Il est la disposition de l appelant pour stocker un contexte Param tres data objet quelconque m moriser www yoctopuce com 247 19 R f rence de l API de haut niveau dualpower wait_async YDualPower Attend que toutes les commandes asynchrones en cours d ex cution sur le module soient termin es et appelle le callback pass en param tre function wait_async callback context function wait_async callback context La fonction callback peut donc librement utiliser des fonctions synchrones ou asynchrones sans risquer de bloquer la machine virtuelle Javascript Param tres callback fonction de callback qui sera appel e d s que toutes les commandes en cours d ex cution sur le module seront termin es La fonction ca
148. ez votre provider internet c est possible mais vous devrez probablement configurer votre routeur ADSL pour qu il accepte et forwarde les requ tes TCP sur le port 4444 8 1 Pr paration Connectez vous sur le site de Yoctopuce et t l chargez les l ments suivants e La librairie de programmation pour PHP Le programme VirtualHub pour Windows Mac OS X ou Linux selon l OS que vous utilisez D compressez les fichiers de la librairie dans un r pertoire de votre choix accessible votre serveur web branchez vos modules lancez le programme VirtualHub et vous pouvez commencer vos premiers test Vous n avez pas besoin d installer de driver 8 2 Contr le de la fonction Servo Il suffit de quelques lignes de code pour piloter un Yocto Servo Voici le squelette d un fragment de code PHP qui utilise la fonction Servo include yocto api php include Myoctokservo phph 1 Quelques serveurs PHP gratuits easyPHP pour windows MAMP pour Mac Os X www yoctopuce com FR libraries php 3 www yoctopuce com FR virtualhub php www yoctopuce com 39 8 Utilisation du Yocto Servo en PHP On r cup re l objet repr sentant le module travers le VirtualHub local yRegisterHub http 127 0 0 1 4444 S Serrmsg Sservo yFindServo SERVORC1 123456 servol Pour g rer le hot plug on v rifie que le module est l if servo gt isOnline Utiliser servo gt set _position Voyons maintenant en d tail
149. fois au cours de la vie du module Veillez donc a ne pas appeler cette fonction depuis l int rieur d une boucle 88 www yoctopuce com 14 Utilisation du Yocto Servo en Python Enumeration des modules Obtenir la liste des modules connect s se fait l aide de la fonction YModule yFirstModule qui renvoie le premier module trouv il suffit ensuite d appeler la mehode nextModule de cet objet pour trouver les modules suivants et ce tant que la r ponse n est pas un null Ci dessous un petit exemple listant les module connect s usr bin python a S CR SLI ee on import os sys et eier OO 1s emma errmsg YRefParam Setup the API to use local USB devices if YAPI RegisterHub usb errmsg YAPI SUCCESS sys exit init error str errmsg EES module YModule FirstModule while module is not None print module get serialNumber module get productName module module nextModule 14 5 Gestion des erreurs Lorsque vous impl mentez un programme qui doit interagir avec des modules USB vous ne pouvez pas faire abstraction de la gestion des erreurs Il y aura forc ment une occasion o un utilisateur aura d branch le p riph rique soit avant de lancer le programme soit m me en pleine op ration La librairie Yoctopuce est pr vue pour vous aider supporter ce genre de comportements mais votre code doit n anmoins tre fait pour se comporter au mieux pour interpr ter les erreurs
150. g rer les modules contenant un servo comme le Yocto Servo yRegisterHub La fonction yRegisterHub initialise l API de Yoctopuce en indiquant o les modules doivent tre recherch s Utilis e avec le param tre usb elle permet de travailler avec les modules connect s localement la machine Si l initialisation se passe mal cette fonction renverra une valeur diff rente de YAP L SUCC ESS et retournera via le param tre errmsg un explication du probl me 80 www yoctopuce com 13 Utilisation du Yocto Servo en Delphi yFindServo La fonction yFindServo permet de retrouver un servo en fonction du num ro de s rie de son module h te et de son nom de fonction Mais vous pouvez tout aussi bien utiliser des noms logiques que vous auriez pr alablement configur s Imaginons un module Yocto Servo avec le num ros de s rie SERVORC1 123456 que vous auriez appel MonModule et dont vous auriez nomm la fonction servo1 MaFonction les cinq appels suivants seront strictement quivalents pour autant que MaFonction ne soit d finie qu une fois pour viter toute ambigu t servo yFindServo SERVORC1 123456 servol servo yFindServo SERVORC1 123456 MaFonction servo yFindServo MonModule servol servo yFindServo MonModule MaFonction servo yFindServo MaFonction yFindServo renvoie un objet que vous pouvez ensuite utiliser loisir pour contr ler le servo isOnline
151. garde des r glages se passera correctement Cette limite li e la technologie employ e par le micro processeur du module se situe aux alentour de 100000 cycles Pour r sumer vous ne pouvez employer la fonction saveToFlash que 100000 fois au cours de la vie du module Veillez donc ne pas appeler cette fonction depuis l int rieur d une boucle num ration des modules Obtenir la liste des modules connect s se fait a l aide de la fonction yFirstModule qui renvoie le premier module trouv il suffit ensuite d appeler la fonction nextModule de cet objet pour trouver les modules suivants et ce tant que la r ponse n est pas un nil Ci dessous un petit exemple listant les module connect s program inventory SAPPTYPE CONSOLE uses Sysutils yocto api var module TYModule errmsg string begin Setup the API to use local USB devices if yRegisterHub usb errmsg lt gt YAPI SUCCESS then begin Write RegisterHub error errmsg exit end Writeln Device list module yFirstModule while module lt gt nil do begin WeitelniSmoduleserssemalNumbe Ee EE E E module module nextModule end end 13 4 Gestion des erreurs Lorsque vous impl mentez un programme qui doit interagir avec des modules USB vous ne pouvez pas faire abstraction de la gestion des erreurs Il y aura forc ment une occasion o un utilisateur aura d branch le p riph rique soit avant de lancer le programme soit m
152. gique ce dernier pouvant tre librement choisi par l utilisateur Utiliser des noms logiques pour les fonctions permet une plus grande flexibilit au niveau de la programmation des modules Le module Yocto Servo fournit deux fonctions Servo dont il existe cinq instances servo1 servod et dualPower dont il existe une seule instance Servo1 Servo5 Il s agit de la fonction de pilotage des servo moteurs vous pouvez leur affecter un nom logique en cliquant sur le bouton rename Dual power Il s agit de la fonction qui permet de piloter la double alimentation USB externe Vous pouvez donner un nom logique cette fonction et choisir son mode de fonctionnement teint USB externe ou automatique 3 www yoctopuce com FR virtualhub php 4 Consultez la documentation du virtual hub pour plus de d tails www yoctopuce com 11 12 www yoctopuce com 4 Montage et connectique Ce chapitre fournit des explications importantes pour utiliser votre module Yocto Servo en situation r elle Prenez soin de le lire avant d aller trop loin dans votre projet si vous voulez viter les mauvaises surprises 4 1 Fixation Pendant la mise au point de votre projet vous pouvez vous contenter de laisser le module se promener au bout de son c ble Veillez simplement ce qu il ne soit pas en contact avec quoi que soit de conducteur comme vos outils Une fois votre projet pratiquement termin il faudra penser faire en sorte que vos modu
153. haque fois qu un module est d branch function yRegisterDeviceRemovalCallback removalCallback function RegisterDeviceRemovalCallback removalCallback function yRegisterDeviceRemovalCallback removalCallback void yRegisterDeviceRemovalCallback yDeviceUpdateCallback removalCallback void yRegisterDeviceRemovalCallback yDeviceUpdateCallback removalCallback procedure yRegisterDeviceRemovalCallback removalCallback yDeviceUpdateFunc procedure yRegisterDeviceRemovalCallback ByVal removalCallback As yDeviceUpdateFunc void RegisterDeviceRemovalCallback yDeviceUpdateFunc removalCallback synchronized static void RegisterDeviceRemovalCallback DeviceRemovalCallback removalCallback def RegisterDeviceRemovalCallback removalCallback Le callback sera appel pendant l xecution de la fonction yHandleDeviceList que vous devrez appeler r guli rement Param tres removalCallback une proc dure qui prend un YModu le en param tre ou null www yoctopuce com 131 19 R f rence de l API de haut niveau YAPI RegisterHub YAPI yRegisterHub Configure la librairie Yoctopuce pour utiliser les modules connect s sur une machine donn e function yRegisterHub url errmsg node js function RegisterHub url errmsg php function yRegisterHub url amp errmsg YRETCODE yRegisterHub const string amp url string amp errmsg YRETCODE yRegisterHub NSString url NSError errmsg function yRegisterHub url
154. hodes des objets YDualPower dualpower describe Retourne un court texte d crivant le contr le d alimentation au format TYPE NAME SERIAL FUNCTIONID dualpower get_advertisedValue Retourne la valeur courante du contr le d alimentation pas plus de 6 caract res dualpower get_errorMessage Retourne le message correspondant la derni re erreur survenue lors de l utilisation du contr le d alimentation dualpower get_errorType Retourne le code d erreur correspondant la derni re erreur survenue lors de l utilisation du contr le d alimentation dualpower get_extVoltage Retourne la tension mesur e sur l alimentation de puissance externe en millivolts dualpower get_friendlyName Retourne un identifiant global du contr le d alimentation au format NOM_MODUL Di NON FONCTION dualpower get_functionDescriptor Retourne un identifiant unique de type YF UN_DESCR correspondant la fonction dualpower get_functionld Retourne l identifiant mat riel du contr le d alimentation sans r f rence au module dualpower get_hardwareld Retourne l identifiant mat riel unique du contr le d alimentation au format SERTAL FUNCTIONID dualpower get_logicalName 220 www yoctopuce com 19 R f rence de l API de haut niveau Retourne le nom logique du contr le d alimentation dualpower get_module Retourne l o
155. i sauf Opera Vous trouverez aussi ce code dans le r pertoire Examples Doc GettingStarted Yocto Servo de la librairie Yoctopuce Vous reconnaitrez dans cet exemple l utilisation des fonctions expliqu es ci dessus cette fois utilis es avec le d corum n cessaire en faire un petit programme d exemple concret 4 Si vous n avez pas d diteur de texte utilisez Notepad plut t que Microsoft Word 32 www yoctopuce com 7 Utilisation du Yocto Servo en Javascript L exemple est cod pour tre utilis soit depuis un serveur web soit en ouvrant directement le fichier localement sur la machine Notez que cette derni re solution n est pas possible avec certaines versions de Internet Explorer en particulier IE 9 de Windows 7 qui refuse d ouvrir des connections r seau lorsqu il travaille sur un fichier local Pour utiliser Internet Explorer vous devez donc mettre les pages sur un serveur web Aucun probl me par contre avec Chrome Firefox ou Safari Si le Yocto Servo n est pas branch sur la machine ou fonctionne le navigateur internet remplacez dans l exemple l adresse 127 0 0 1 par l adresse IP de la machine o est branch le Yocto Servo et ou vous avez lanc le VirtualHub lt HTML gt lt HEAD gt lt TITLE gt Hello World lt TITLE gt lt SCRIPT type text javascript sre yocto_api js gt lt SCRIPI gt lt SCRIPT type text javascript src yocto servo js gt lt SCRIPT gt lt SCRIPT language javascriptl 5 typ
156. iez pas d appeler la m thode saveToFlash du module si le r glage doit tre pr serv Param tres newval une cha ne de caract res repr sentant le nom logique du contr le d alimentation Retourne un code d erreur n gatif YAPI_SUCCESS si l appel se d roule sans erreur En cas d erreur d clenche une exception ou retourne www yoctopuce com 245 19 R f rence de l API de haut niveau dualpower set_powerControl YDualPower dualpower setPowerControl Modifie le mode d alimentation choisi pour les fonctions du module consommant beaucoup de courant function set_powerControl newval function set_powerControl newval function set_powerControl newval int set_powerControl Y_POWERCONTROL_enum newval int setPowerControl Y_POWERCONTROL_enum newval function set_powerControl newval Integer integer vb function set_powerControl ByVal newval As Integer As Integer int set_powerControl int newval int set_powerControl int newval py def set_powerControl newval YDualPower target set_powerControl newval Param tres newval une valeur parmi Y_POWERCONTROL_AUTO Y_POWERCONTROL_FROM_USB Y_POWERCONTROL_FROM_EXT et Y_POWERCONTROL_OFF repr sentant le mode d alimentation choisi pour les fonctions du module consommant beaucoup de courant Retourne YAPI_SUCCESS si l op ration se d roule sans erreur En cas d erreur d clenche une exception ou retourne un code d err
157. ifications seconds between two notification 600 seconds in any case No less than 3 But notify after 5 Press on the Test button to check your parameters 6 When everything works press on the OK button rest ox cancel Et choisir Yocto API callback Il suffit alors de d finir l URL du script PHP et si n cessaire le nom d utilisateur et le mot de passe pour acc der a cette URL Les m thodes d authentification support es sont basic et digest La 46 www yoctopuce com 8 Utilisation du Yocto Servo en PHP seconde est plus s re que la premi re car elle permet de ne pas transf rer le mot de passe sur le r seau Utilisation Du point de vue du programmeur la seule diff rence se trouve au niveau de l appel la fonction yRegisterHub au lieu d utiliser une adresse IP il faut utiliser la cha ne callback ou http callback qui est quivalent include yocto api php yRegisterHub callback La suite du code reste strictement identique Sur l interface du VirtualHub il y a en bas de la fen tre de configuration de l API par callback HTTP un bouton qui permet de tester l appel au script PHP Il est noter que le script PHP qui contr le les modules distance via l API par callback HTTP ne peut tre appel que par le VirtualHub En effet il a besoin des informations post es par le VirtualHub pour fonctionner Pour coder un site Web qui contr le des modules Yoctopuce de mani
158. imple consiste essayer Notez que la consommation en pic d un servo moteur peut tre bien plus lev e que sa consommation moyenne Ces pics de consommation apparaissent lorsque le servo se met en mouvement ou lorsqu il force Externe Dans ce mode les servos ne sont aliment s que si il y a une alimentation externe avec une tension sup rieure 4V Automatique Dans ce mode les servo sont normalement aliment s par USB Si la tension de l alimentation externe passe de OV a plus de 5V l alimentation externe est choisie Si la tension de l alimentation www yoctopuce com 7 2 Pr sentation externe passe en dessous de 4V les servos ne sont plus aliment s l alimentation ne repasse pas automatiquement sur l USB Les leds d tat de alimentation L tat logique de l alimentation du module est refl t par les deux leds plac es c t du connecteur de servos Lorsque les servos sont aliment s par le port USB la led int rieure est allum e lorsque les servos sont aliment gr ce a l alimentation externe la led externe est aliment Si cette derni re se mets a clignoter cela signifie que la tension de l alimentation externe devient anormalement basse lt 4 5v et qu elle va bient t tre coup e 8 www yoctopuce com 3 Premiers pas Arriv ce chapitre votre Yocto Servo devrait tre branch votre ordinateur qui devrait l avoir reconnu Il est temps de le faire fonctionner Rendez vous sur le site de
159. in execname ExtractFileName paramstr 0 WriteLn Usage WriteLn execname lt serial number gt lt channel gt position WriteLn execname lt logical name gt lt channel gt position WriteLn execname any lt channel gt position WriteLn Example WriteLn execname any 2 1000 EE EE Palt end var errmsg target channel string position integer EE Srey m 2 TYModule begin if paramcount lt 3 then usage target channel position UpperCase paranstr 1 paramstr 2 StrToInt paramstr 3 HE Re gusizerHulbi usb i errmsg lt gt EE then begin writeln RegisterHub error errmsg Hate end if target ANY then begin SONO if serv begin write halt end nee se target end YFEirstServoli o nil then ln No module connected check USB cable rvo get module mm get serialiNumber Writeln using target servo YFi ndServo target servo channel if servo isOnline then servo move position 1500 else writeln Module not connected check identification and USB cable end Il n y a que peu de lignes v ritablement importantes dans le code pr c dent Nous allons les expliquer en d tail yocto_api et yocto_servo Ces deux unit s permettent d avoir acc s aux fonctions permettant de g rer les modules Yoctopuce yocto api doit toujours tre utilis yocto servo est n cessaire pour
160. interface graphique 12 3 Contr le de la fonction Servo Il suffit de quelques lignes de code pour piloter un Yocto Servo Voici le squelette d un fragment de code C qui utilise la fonction Servo EI String errmsg YServo servoj On r cup re l objet repr sentant le module ici connect en local sur USB YAPI RegisterHub usb errmsg servo YServo FindServo SERVORC1 123456 servol Pour g rer le hot plug on v rifie que le module est l if servo isOnline Utiliser servo set_position Voyons maintenant en d tail ce que font ces quelques lignes YAPI RegisterHub La fonction YAPI RegisterHub initialise l API de Yoctopuce en indiquant o les modules doivent tre recherch s Utilis e avec le param tre usb elle permet de travailler avec les modules connect s localement la machine Si l initialisation se passe mal cette fonction renverra une valeur diff rente de YAPI SUCCESS et retournera via le param tre errmsg une explication du probleme YServo FindServo La fonction YServo FindServo permet de retrouver un servo en fonction du num ro de s rie de son module h te et de son nom de fonction Mais vous pouvez tout aussi bien utiliser des noms logiques que vous auriez pr alablement configur s Imaginons un module Yocto Servo avec le num ros de s rie SERVORC1 123456 que vous auriez appel MonModule et dont vous auriez nomm la fonction servo MaFonction les cin
161. ion n est active FROM_USB si les fonctions sont aliment es par USB et FROM_EXT si les fonctions sont aliment es par une source externe Cet attribut est automatiquement mis a jour en particulier lorsque le contr le de l alimentation de puissance est en mode automatique powerControl Mode d alimentation choisi pour les fonctions du module consommant beaucoup de courant OFF pour tout teindre FROM_USB pour forcer l alimentation par USB FROM_EXT pour forcer l alimentation externe et AUTO pour activer le mode de contr le automatique de l alimentation de puissance extVoltage Tension mesur e sur l alimentation de puissance externe en millivolts 5 5 Interface de la fonction Servo La librairie de programmation Yoctopuce permet non seulement de d placer le servo vers une position donn e mais aussi de sp cifier l interval de temps dans lequel le mouvement doit tre fait de sorte a pouvoir synchroniser un mouvement sur plusieurs servos logicalName Cha ne de caract res contenant le nom logique du servo initialement vide Cet attribut peut tre chang au bon vouloir de l utilisateur Un fois initialis une valeur non vide il peut servir de point de d part pour acc der a directement a le servo Si deux servo portent le m me nom logique dans un projet il n y a pas moyen de d terminer lequel va r pondre si l on tente un acc s par ce nom logique Le nom logique du module est limit 19 caract res parmi A Z a
162. ire un petit programme d exemple concret lt HTML gt lt HEAD gt lt TITLE gt Hello World lt TITLE gt lt HEAD gt lt BODY gt lt FORM method get gt lt php include yocto api php include yocto servo php Use explicit error handling rather than exceptions yDisableExceptions Setup the API to use the VirtualHub on local machine if yRegisterHub http 127 0 0 1 4444 Serrmsg YAPI SUCCESS diet annoreontact EE EE Net Eet Re Sserial GET serial ame Sserre leu Check if a specified module is available online Sservol yFindServo serial servol Sservo5 yFindServo serial servo5 if Sservol gt isOnline die Module not connected check serial and USB cable else or use any connected module suitable for the demo Sservol yFirstServo EE die No module connected check USB cable else Sserial servol gt module gt get serialnumber Sservol yFindServo serial servol Sservo5 yFindServo serial servo5 Print Module to use lt input name serial value Sserial gt lt br gt ie SSS S Cati Voos IIN pos GET pos SServoll Sset position Sposi move as fast as possibile Sservo5 gt move pos 3000 move in 3 seconds o gt lt input type radio name pos value 1000 gt Move to 1000 lt br gt lt input type radio name pos value 500 gt Move to 500 lt br gt l
163. is es reportez vous aux chapitre API Modifications des r glages du module Lorsque que vous souhaitez modifier les r glages d un module il suffit d appeler la fonction set _xxx correspondante cependant cette modification n a lieu que dans la m moire vive du module si le module red marre les modifications seront perdues Pour qu elle soient m moris es de mani re persistante il est n cessaire de demander au module de sauvegarder sa configuration courante dans sa m moire non volatile Pour cela il faut utiliser la m thode saveToFlash Inversement il est possible de forcer le module oublier ses r glages courants en utilisant la m thode revertFromFlash Ce petit exemple ci dessous vous permet changer le nom logique d un module 42 www yoctopuce com 8 Utilisation du Yocto Servo en PHP lt HTML gt lt HEAD gt lt TITLE gt save settings lt TITLE gt lt BODY gt lt FORM method get gt lt php include yocto api php i Use explicit error handling rather than exceptions yDisableExceptions Setup the API to use the VirtualHub on local machine if yRegisterHub http 127 0 0 1 4444 Serrmsg YAPI SUCCESS due MCannoe contact Vital on e270 OF In i Sserial GET serial NS Serra leu Check if a specified module is available online Smodule yFindModule serial if Smodule gt isOnline die Module not connected check serial and USB cable else
164. isecondes callback fonction de callback qui sera appel e d s que le r sultat sera connu La fonction callback re oit trois arguments le contexte fourni par l appelant l objet fonction concern et le code d erreur ou YAPT_ SUCCESS context contexte fourni par l appelant et qui sera pass tel quel la fonction de callback Retourne rien du tout le r sultat sera pass en param tre la fonction de callback 210 www yoctopuce com 19 R f rence de l API de haut niveau servo gt move D clenche un mouvement vitesse constante vers une position donn e function move target ms_duration function move target ms_duration function move target ms_duration int move int target int ms_duration int move int target int ms_duration function move target Longint ms_duration Longint integer function move ByVal target As Integer ByVal ms_duration As Integer As Integer int move int target int ms_duration int move int target int ms_duration def move target ms_duration YServo target move target ms_duration Param tres target nouvelle position a la fin du mouvement ms_duration dur e totale du mouvement en millisecondes Retourne YAPI_SUCCESS si l op ration se d roule sans erreur En cas d erreur d clenche une exception ou retourne un code d erreur n gatif YServo www yoctopuce com 211 19 R f rence de l API de haut niveau
165. itre API 66 www yoctopuce com 11 Utilisation du Yocto Servo en VisualBasic NET Modifications des r glages du module Lorsque que vous souhaitez modifier les r glages d un module il suffit d appeler la fonction set xxx correspondante cependant cette modification n a lieu que dans la m moire vive du module si le module red marre les modifications seront perdues Pour qu elle soient m moris es de mani re persistante il est n cessaire de demander au module de sauvegarder sa configuration courante dans sa m moire non volatile Pour cela il faut utiliser la m thode saveToFlash Inversement il est possible de forcer le module oublier ses r glages courants en utilisant la m thode revertFromFlash Ce petit exemple ci dessous vous permet changer le nom logique d un module Module Modulel Sub usage Console WriteLine usage demo lt serial or logical name gt lt new logical name gt End End Sub Sub Main Dim argv As String System Environment GetCommandLineArgs Dim errmsg As String Dim newname As String Dim m As YModule If argv Length lt gt 3 Then usage REM Setup the API to use local USB devices If yRegisterHub usb errmsg lt gt YAPI SUCCESS Then Console WriteLine RegisterHub error errmsg End End If m yFindModule argv 1 REM use serial or logical name If m isOnline Then newname argv 2 If Not yCheckLogicalName newname Then Console WriteLine
166. ivity est une sous classe de Context le plus simple est de d appeler YAPI EnableUSBHost this dans la m thode onCreate de votre application Si l objet pass en param tre n est pas du bon type une exception YAPI Exception sera g n r e Override public void onCreate Bundle savedInstanceState super onCreate savedInstanceState try Pass the application Context to the Yoctopuce Library YAPI EnableUSBHost this EE EE Log e Yocto e getLocalizedMessage Lancement automatique Il est possible d enregistrer son application comme application par d faut pour un module USB dans ce cas des qu un module sera connect au syst me l application sera lanc e automatiquement Il faut ajouter lt action android name android hardware usb action USB DEVICE _ATTACHED gt dans la section lt intent filter gt de l activit principale La section lt activity gt doit contenir un pointeur sur un fichier xml qui contient la liste des modules USB qui peuvent lancer l application lt manifest xmlns android http schemas android com apk res android lt uses feature android name android hardware usb host gt lt apolication so act LL ey android name MainActivity gt lt intent filter gt lt action android name android intent action MAIN gt lt action android name android hardware usb action USB DEVICE ATTACHED gt lt category android name android intent category
167. l criture de ce manuel la librairie Javascript fonctionne avec n importe quel browser r cent sauf Opera Il est probable que qu Opera finira un jour par fonctionner avec la librairie Yoctopuce mais pour l instant ce n est pas le cas Javascript fait partie de ces langages qui ne vous permettront pas d acc der directement aux couches mat rielles de votre ordinateur C est pourquoi vous devrez faire tourner la passerelle de Yoctopuce appel e VirtualHub sur la machine laquelle sont branch s les modules 7 1 Pr paration Connectez vous sur le site de Yoctopuce et t l chargez les l ments suivants e La librairie de programmation pour Javascript e Le programme VirtualHub pour Windows Mac OS X ou Linux selon l OS que vous utilisez D compressez les fichiers de la librairie dans un r pertoire de votre choix branchez vos modules lancez le programme VirtualHub et vous pouvez commencer vos premiers test Vous n avez pas besoin d installer de driver 7 2 Contr le de la fonction Servo Il suffit de quelques lignes de code pour piloter un Yocto Servo Voici le squelette d un fragment de code JavaScript qui utilise la fonction Servo lt SCRIPT type text javascript sre yocto_api js gt lt SCRIPT gt lt SCRIPT type text javascript sre yocto servo js gt lt SCRIPIT gt On r cup re l objet repr sentant le module a travers le VirtualHub local yRegisterHub http 127 0 0 1 4444 var servo yFindServo
168. lName Modifications des r glages du module Lorsque que vous souhaitez modifier les r glages d un module il suffit d utiliser la commande set xxx correspondante cependant cette modification n a lieu que dans la m moire vive du module si le module red marre les modifications seront perdues Pour qu elle soient m moris es de mani re persistante il est n cessaire de demander au module de sauvegarder sa configuration courante dans sa m moire non volatile Pour cela il faut utiliser la commande saveToFlash Inversement il est possible de forcer le module oublier ses r glages courants en utilisant la m thode revertFromFlash Par exemple YModule SERVORC1 12346 set logicalName MonPremierModule YModule SERVORC1 12346 saveToFlash Notez que vous pouvez faire la m me chose en seule fois l aide de l option s YModule s SERVORC1 12346 set logicalName MonPremierModule Attention le nombre de cycles d criture de la m moire non volatile du module est limit Pass cette limite plus rien ne garantit que la sauvegarde des r glages se passera correctement Cette limite li e la technologie employ e par le micro processeur du module se situe aux alentour de 100000 cycles Pour r sumer vous ne pouvez employer la commande saveToFlash que 100000 fois au cours de la vie du module Veillez donc ne pas appeler cette commande depuis l int rieur d une boucle 6 5 Limitations L API en ligne de commande est sujette la m me
169. la fonction Servo La librairie de programmation Yoctopuce permet non seulement de d placer le servo vers une position donn e mais aussi de sp cifier l interval de temps dans lequel le mouvement doit tre fait de sorte pouvoir synchroniser un mouvement sur plusieurs servos Pour utiliser les fonctions d crites ici vous devez inclure lt script type text javascript src yocto_servo js gt lt script gt var yoctolib require yoctolib var YServo yoctolib YServo require_once yocto_servo php include yocto_servo h import yocto_servo h uses yocto_servo yocto_servo vb yocto_servo cs import com yoctopuce YoctoAPI YServo from yocto_servo import Fonction globales yFindServo func Permet de retrouver un servo d apr s un identifiant donn yFirstServo Commence l num ration des servo accessibles par la librairie M thodes des objets YServo servo describe Retourne un court texte d crivant le servo au format TYPE NAME SERIAL FUNCTIONID servo get_advertisedValue Retourne la valeur courante du servo pas plus de 6 caract res servo get_errorMessage Retourne le message correspondant a la derni re erreur survenue lors de l utilisation du servo servo get_errorType Retourne le code d erreur correspondant la derni re erreur survenue lors de l utilisation du servo servo get_friendlyName Retourne un identifiant global du servo au format NOM MODULE NOM_FONCTI
170. la machine Durant l attente la librairie va n anmoins continuer lire p riodiquement les informations en provenance des modules Yoctopuce en appelant la fonction yHandleEvents afin de se maintenir jour Cette fonction peut signaler une erreur au cas la communication avec un module Yoctopuce ne se passerait pas comme attendu Param tres ms_duration un entier correspondant la dur e de la pause en millisecondes errmsg une cha ne de caract res pass e par r f rence dans laquelle sera stock un ventuel message d erreur Retourne YAPI_ SUCCESS si l op ration se d roule sans erreur En cas d erreur d clenche une exception ou retourne un code d erreur n gatif www yoctopuce com 139 19 R f rence de l API de haut niveau YAPI UnregisterHub YAPI yUnregisterHub Configure la librairie Yoctopuce pour ne plus utiliser les modules connect s sur une machine pr alablement enregistrer avec RegisterHub _is function yUnregisterHub url node js function UnregisterHub url function yUnregisterHub url void yUnregisterHub const string amp url void yUnregisterHub NSString url procedure yUnregisterHub url string procedure yUnregisterHub ByVal url As String cs void UnregisterHub string url synchronized static void UnregisterHub String url def UnregisterHub url Param tres url une cha ne de caract res contenant usb ou 140 www yoctopu
171. les ne puissent pas se promener l int rieur Exemples de montage sur un support Le module Yocto Servo dispose de trous de montage 2 5mm Vous pouvez utiliser ces trous pour y passer des vis Le diam tre de la t te de ces vis ne devra pas d passer 4 5mm sous peine d endommager les circuits du module Veillez que la surface inf rieure du module ne soit pas en contact avec le support La m thode recommand e consiste utiliser des entretoises mais il en www yoctopuce com 13 4 Montage et connectique existe d autres Rien ne vous emp che de le fixer au pistolet colle a ne sera tr s joli mais a tiendra Si vous comptez visser votre module directement contre une paroi conductrice un chassis m tallique par exemple intercalez une couche isolante entre les deux Sinon vous aller coup s r provoquer un court circuit il y a des pads nu sous votre module Du simple ruban adh sif d emballage devrait faire l affaire 4 2 Polarit Vous devez brancher des fiches de mani re ce que le fil de signal soit branch la broche sup rieure Notez que si vous branchez la prise d un servo l envers vous ne risquez pas grand chose il ne fonctionnera tout simplement pas Sens de branchement des servos Les couleurs des cables de servos varient d une marque l autre vous trouverez ci dessous les codes de couleurs les plus courants Marque Signal Multiplex jaune rouge Noir Futaba Robbe
172. limitation que les autres API il ne peut y avoir q une seule application la fois qui acc de aux modules de mani re native Par d faut l API en ligne de commande fonctionne en natif Cette limitation peut ais ment tre contourn e en utilisant un Virtual Hub il suffit de faire tourner le VirtualHub sur la machine concern e et d utiliser les executables de l API en ligne de commande avec l option r par exemple si vous utilisez YModule inventory Vous obtenez un inventaire des modules connect s par USB en utilisant un acc s natif Si il y a d j une autre commande en cours qui acc de aux modules en natif cela ne fonctionnera pas Mais si vous lancez un virtual hub et que vous lancez votre commande sous la forme YModule r 127 0 0 1 inventory 3 http www yoctopuce com FR virtualhub php www yoctopuce com 29 6 Utilisation du Yocto Servo en ligne de commande cela marchera parce que la commande ne sera plus ex cut e nativement mais travers le Virtual Hub Notez que le Virtual Hub compte comme une application native 30 www yoctopuce com 7 Utilisation du Yocto Servo en Javascript Javascript n est probablement pas le premier langage qui vous serait venu l esprit pour contr ler du mat riel mais il pr sente l immense avantage d tre tr s facile mettre en oeuvre avec Javascript il ne vous faudra qu un diteur de texte et un browser internet pour r aliser vos premiers essais Au moment de
173. lis la programmation reste strictement identique D un langage l autre les fonctions ont exactement le m me nom prennent les m mes param tres Les seules diff rences sont li es aux contraintes des langages eux m mes Language Natif Natif avec DLL so Hub virtuel C H Objective C Delphi Python VisualBasic Net CH Net Javascript Node js PHP Java Java pour Android Ligne de commande M thode de support pour les diff rents langages Limitation des librairies Yoctopuce Les librairies Natives et DLL ont une limitation technique Sur une m me machine vous ne pouvez pas faire tourner en m me temps plusieurs applications qui acc dent nativement aux modules Yoctopuce Si vous d sirez contr ler plusieurs projets depuis la m me machine codez vos applications pour qu elle acc dent aux modules via un VirtualHub plut t que nativement Le changement de mode de fonctionnement est trivial il suffit de changer un param tre dans l appel yRegisterHub 5 7 Programmation par ou commencer Arriv ce point du manuel vous devriez conna tre l essentiel de la th orie propos de votre Yocto Servo Il est temps de passer la pratique Il vous faut t l charger la librairie Yoctopuce pour votre language de programmation favori depuis le site web de Yoctopuce Puis sautez directement au chapitre correspondant au langage de programmation que vous avez choisi Tous les exemples d cri
174. llback re oit deux arguments le contexte fourni par l appelant et l objet fonction concern context contexte fourni par l appelant et qui sera pass tel quel la fonction de callback Retourne rien du tout 248 www yoctopuce com 20 Probl mes courants 20 1 Linux et USB Pour fonctionner correctement sous Linux la librairie a besoin d avoir acc s en criture tous les p riph riques USB Yoctopuce Or par d faut sous Linux les droits d acc s des utilisateurs non root USB sont limit s la lecture Afin d viter de devoir lancer les ex cutables en tant que root il faut cr er une nouvelle r gle udev pour autoriser un ou plusieurs utilisateurs acc der en criture aux p riph riques Yoctopuce Pour ajouter une r gle udev votre installation il faut ajouter un fichier avec un nom au format nomArbitraire rules dans le r pertoire etc udev rules d Lors du d marrage du syst me udev va lire tous les fichiers avec l extension rules de ce r pertoire en respectant l ordre alphab tique par exemple le fichier 51 custom rules sera interpr t APRES le fichier 50 udev default rules Le fichier 50 udev default contient les r gles udev par d faut du syst me Pour modifier le comportement par d faut du syst me il faut donc cr er un fichier qui commence par un nombre plus grand que 50 qui d finira un comportement plus sp cifique que le d faut du systeme Notez que pour
175. ln errmsg hanit end forces a device inventory if yapiUpdateDeviceList 1 errmsg lt 0 then begin writeln errmsg halt endy loads all device handles into dataBuffer if yapiGetAllDevices dataBuffer sizeof dataBuffer neededsize errmsg lt 0 then begin writeln errmsg halte endy gets device info from each handle for i 0 to neededsize div sizeof integer 1 do begin if apiGetDevicelnfo dataBuffer i devinfos errmsg lt 0 then begin writeln errmsg halt end writeln pansichar devinfos serial pansichar devinfos productname end end 18 4 Port de la librairie haut niveau Toutes les sources de l API Yoctopuce tant fournies dans leur int gralit vous pouvez parfaitement entreprendre le port complet de l API dans le langage de votre choix Sachez cependant qu une grande partie du code source de l API est g n r automatiquement Ainsi il n est pas n cessaire de porter la totalit de l API il suffit de porter le fichier vocho api et un de ceux correspondant une fonctionnalit par exemple yocto_relay Moyennant un peu de travail suppl mentaire Yoctopuce sera alors en mesure de g n rer tous les autres fichiers C est pourquoi il est fortement recommand de contacter le support Yoctopuce avant d entreprendre le port de la librairie Yoctopuce dans un autre langage Un travail collaboratif sera profitable aux deux parties 116 www yoctopuce com 19 R f rence de
176. load YServo 208 load_async YDualPower 241 load_async YModule 175 load_async YServo 209 Localisation 9 Mod lisme 14 Module 9 19 28 33 41 51 59 66 74 81 87 93 102 143 Montage 13 move YServo 210 N Natif 97 Native 22 NET 63 nextDualPower YDualPower 242 nextModule YModule 176 nextServo YServo 211 Niveau 116 117 O Objective C 57 P Paradigme 17 Plateformes 250 Polarit 14 Port 98 116 Pr paration 31 39 79 91 97 PreregisterHub YAPI 128 Pr requis 2 Pr sentation 5 Probl mes 249 Programmation 17 24 109 Projet 63 71 Python 85 R reboot YModule 177 R f rence 117 RegisterDeviceArrivalCallback YAPI 129 RegisterDeviceRemovalCallback YAPI 130 RegisterHub YAPI 131 RegisterHubDiscoveryCallback YAPI 133 RegisterLogFunction YAPI 134 registerValueCallback YDualPower 243 registerValueCallback YServo 212 revertFromFlash YModule 178 S saveToFlash YModule 179 SelectArchitecture YAPI 135 Service 22 Servo 21 28 31 39 49 57 64 72 79 86 91 100 188 set_beacon YModule 180 set_logicalName YDualPower 244 set_logicalName YModule 181 set_logicalName YServo 213 set_luminosity YModule 182 set_neutral YServo 214 set_position YServo 215 set_powerControl YDualPower 245 set_range YServo 216 set_usbBandwidth YModule 183 set_userData YDualPower 246 set_userData YModule 184 set_userData YServo 217 SetDelegate YAPI 136 SetTimeout YAPI 137 Sleep
177. lors le choix entre simplement ajouter ces fichiers votre projet ou les ajouter en tant que lien le bouton Ajouter est en fait un menu d roulant Dans le premier cas Visual Studio va copier les fichiers choisis dans votre projet dans le second Visual Studio va simplement garder un lien sur les fichiers originaux Il est recommand d utiliser des liens une ventuelle mise jour de la librairie sera ainsi beaucoup plus facile Ensuite ajoutez de la m me mani re la dll yapi d11 qui se trouve dans le r pertoire Sources d11 Puis depuis la fen tre Explorateur de solutions effectuez un clic droit sur la DLL choisissez Propri t et dans le panneau Propri t s mettez l option Copier dans le r pertoire de sortie toujours copier Vous tes maintenant pr t utiliser vos modules Yoctopuce depuis votre environnement Visual Studio Afin de les garder simples tous les exemples fournis dans cette documentation sont des applications consoles Il va de soit que que les fonctionnement des librairies est strictement identiques si vous les int grez dans une application dot e d une interface graphique 11 3 Contr le de la fonction Servo Il suffit de quelques lignes de code pour piloter un Yocto Servo Voici le squelette d un fragment de code VisualBasic NET qui utilise la fonction Servo EE Dim errmsg As String Dim servo As YServo REM On r cup re l objet repr sentant le module ici connect en local sur USB yRegisterHub
178. lpower get_advertisedValue YDualPower dualpower advertisedValue Retourne la valeur courante du contr le d alimentation pas plus de 6 caract res function get_advertisedValue function get_advertisedValue function get_advertisedValue string get_advertisedValue NSString advertisedValue function get_advertisedValue string function get_advertisedValue As String string get_advertisedValue String get_advertisedValue def get_advertisedValue YDualPower target get_advertisedValue Retourne une cha ne de caract res repr sentant la valeur courante du contr le d alimentation pas plus de 6 caract res En cas d erreur d clenche une exception ou retourne Y_ADVERTISEDVALUE_INVALID www yoctopuce com 225 19 R f rence de l API de haut niveau dualpower get_errorMessage YDualPower dualpower errorMessage Retourne le message correspondant la derni re erreur survenue lors de l utilisation du contr le d alimentation function get_errorMessage function get_errorMessage function get_errorMessage string get_errorMessage NSString errorMessage function get_errorMessage string function get_errorMessage As String string get_errorMessage String get_errorMessage def get_errorMessage Cette m thode est principalement utile lorsque la librairie Yoctopuce est utilis e en d sactivant la gestion des exceptions Retourne une ch
179. 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 e Si votre code attrape l exception au vol et la g re et tout se passe bien e 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 e 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 chaque ligne de code Il suffit d appeler la fonction yDisableExceptions pour commuter la librairie dans un mode o les exceptions de 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 logique une m thode get state retournera une valeur Y STATE INVALID une m thode get currentValue retournera une valeur Y CURRENT
180. 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 Acc s aux modules Bien qu il soit parfaitement possible de construire un projet en faisant abstraction de la r partition des fonctionnalit s sur les diff rents modules ces derniers peuvent tre facilement retrouv s l aide de l API En fait ils se manipulent d une mani re assez semblable aux fonctionnalit s Ils disposent d un num ro de s rie affect en usine qui permet de retrouver l objet correspondant l aide de YModule Find Les modules peuvent aussi se voir affecter un nom logique arbitraire qui permettra de les retrouver ensuite plus facilement Et enfin la classe YModule comprend les m thodes d num ration YModule FirstModule et nextModule qui permettent de dresser la liste des modules connect s Interaction Function Module Du point de vue de l API les modules et leurs fonctionnalit s sont donc fortement
181. met de contr ler les param tres g n raux du module et d num rer les fonctions fournies par chaque module Pour utiliser les fonctions d crites ici vous devez inclure lt script type text javascript src yocto_api js gt lt script gt var yoctolib require yoctolib var YAPI yoctolib YAPI var YModule yoctolib YModule require_once yocto_api php include yocto_api h import yocto_api h uses yocto_api yocto_api vb yocto_api cs import com yoctopuce YoctoAPI YModule from yocto_api import Fonction globales yFindModule func Permet de retrouver un module d apr s son num ro de s rie ou son nom logique yFirstModule Commence l num ration des modules accessibles par la librairie M thodes des objets YModule moduledescribe Retourne un court texte d crivant le module module download pathname T l charge le fichier choisi du module et retourne son contenu module gt functionCount Retourne le nombre de fonctions sans compter l interface module existant sur le module module functionid functionindex Retourne l identifiant mat riel de la ni me fonction du module module functionName functionIndex Retourne le nom logique de la ni me fonction du module module functionValue functionIndex Retourne la valeur publi e par la ni me fonction du module module get_beacon Retourne l tat de la balise de localisation module get_errorMessage Retourn
182. minosity m get_luminosity ToString Console Write beacon CH if m get beacon YModule BEACON ON Console WriteLine ON else Console WriteLine OFF Console WriteLine upTime Us eeng wens A MOOD ATOS cal Sect A EE EE EE EE rent EE Console WriteLine Logs r n m get_lastLogs 74 www yoctopuce com 12 Utilisation du Yocto Servo en C else Console WriteLine args 0 not connected check identification and USB cable Chaque propri t xxx du module peut tre lue gr ce une m thode du type YModule get xxxx et les propri t s qui se sont pas en lecture seule peuvent tre modifi es l aide de la m thode Module sert xxx Pour plus de d tails concernant ces fonctions utilis es reportez vous aux chapitre API Modifications des r glages du module Lorsque que vous souhaitez modifier les r glages d un module il suffit d appeler la fonction YModule set xxx correspondante cependant cette modification n a lieu que dans la m moire vive du module si le module red marre les modifications seront perdues Pour qu elle soient m moris es de mani re persistante il est n cessaire de demander au module de sauvegarder sa configuration courante dans sa m moire non volatile Pour cela il faut utiliser la m thode YModule saveToFlash Inversement il est possible de forcer le module oublier ses r glages courants en utilisant la m thode YModule revertFromFlash Ce petit e
183. mo lt serial or logical name gt ON OFF End End Sub Sub Main Dim argv As String System Environment GetCommandLineArgs Dim errmsg As String Dim m As ymodule Ee yRegqusterhub Musbry verrnsg lt gt VARIO SUCCESS Then Console WriteLine RegisterHub error errmsg End Ena it If argv Length lt 2 Then usage m yFindModule argv 1 REM use serial or logical name If m isOnline Then EE eier lengthy 2 then Li aro 2 ON Then m set beacon Y BEACON ON RENE EN Wom Unio Wi See locecoim i EENEG End If 8 Console WriteLine serial m get serialNumber Console WriteLine logical name m get_logicalName Console WriteLine luminosity VS Site meget luminos1ey ON Console Write beacon EI If m get beacon Y BEACON ON Then Console WriteLine ON Else Console WriteLine OFF End If Console WriteLine upTime Ste mt cet veine T000 M SEEN Console WriteLine USB current EE EE EST AE Console WriteLine Logs Console WriteLine Else Console WriteLine argv 1 not connected check identification and USB cable End If m get lastLogs End Sub End Module Chaque propri t xxx du module peut tre lue grace une m thode du type get xxxx et les propri t s qui se sont pas en lecture seule peuvent tre modifi es l aide de la m thode set xxx Pour plus de d tails concernant ces fonctions utilis es reportez vous aux chap
184. module ici connect en local sur USB YAPI RegisterHub usb errmsg servo YServo FindServo SERVORC1 123456 servol Pour g rer le hot plug on v rifie que le module est la if servo isOnline Use servo set_position Loo all Voyons maintenant en d tail ce que font ces quelques lignes YAPI RegisterHub La fonction YAPI RegisterHub initialise l API de Yoctopuce en indiquant o les modules doivent tre recherch s Utilis e avec le param tre usb elle permet de travailler avec les modules connect s localement la machine Si l initialisation se passe mal cette fonction renverra une valeur diff rente de YAPI SUCCESS et retournera via l objet errmsg une explication du probl me YServo FindServo La fonction YServo FindServo permet de retrouver un servo en fonction du num ro de s rie de son module h te et de son nom de fonction Mais vous pouvez tout aussi bien utiliser des noms logiques que vous auriez pr alablement configur s Imaginons un module Yocto Servo avec le num ros de s rie SERVORC1 123456 que vous auriez appel MonModule et dont vous auriez nomm la fonction servo MaFonction les cinq appels suivants seront strictement quivalents pour autant que MaFonction ne soit d finie qu une fois pour viter toute ambigu t servo YServo FindServo SERVORC1 123456 servol servo YServo FindServo SERVORC1 123456 MaFonction servo YServo FindServo MonModule servol se
185. n de type USB le param tre connection_type doit prendre la valeur 1 errmsg est un pointeur sur un buffer de 255 caract res destin r cup rer un ventuel message d erreur Ce pointeur peut tre aussi mis NULL La fonction retourne un entier n gatif en cas d erreur ou z ro dans le cas contraire La fonction yapiUpdateDeviceList g re l inventaire des modules Yoctopuce connect s elle doit tre appel e au moins une fois Pour pouvoir g rer le hot plug et d tecter d ventuels nouveaux modules connect s cette fonction devra tre apell e intervalles r guliers Le param tre forceupdate devra tre la valeur 1 pour forcer un scan mat riel Le param tre errmsg devra pointer sur un buffer de 255 caract res pour r cup rer un ventuel message d erreur Ce pointeur peut aussi tre null Cette fonction retourne un entier n gatif en cas d erreur ou z ro dans le cas contraire Enfin la fonction yapiHTTPRequest permet d envoyer des requ tes HTTP l API REST du module Le param tre device devra contenir le num ro de s rie ou le nom logique du module que vous cherchez atteindre Le param tre request doit contenir la requ te HTTP compl te y compris les sauts de ligne terminaux buffer doit pointer sur un buffer de caract res suffisamment grand pour contenir la r ponse buffsize doit contenir la taille du buffer fullsize est un pointeur sur un entier qui sera affect la taille effective de la r ponse Le pa
186. n get_functionDescriptor function get_functionDescriptor YFUN_DESCR get_functionDescriptor YFUN_DESCR functionDescriptor function get_functionDescriptor YFUN_DESCR function get_functionDescriptor As YFUN_DESCR YFUN_DESCR get_functionDescriptor String get_functionDescriptor def get_functionDescriptor Cet identifiant peut tre utilis pour tester si deux instance de YFunction r f rencent physiquement la m me fonction sur le m me module Retourne un identifiant de type YFUN_DESCR Si la fonction n a jamais t contact e la valeur retourn e sera Y_FUNCTIONDESCRIPTOR_INVALID 230 www yoctopuce com 19 R f rence de l API de haut niveau dualpower get_functionld YDualPower dualpower functionid Retourne l identifiant mat riel du contr le d alimentation sans r f rence au module function get_functionld function get_functionld function get_functionld string get_functionld NSString functionld function get_functionld As String string get_functionld String get_functionld def get_functionld Par example relay1 Retourne une cha ne de caract res identifiant le contr le d alimentation ex relay1 En cas d erreur d clenche une exception ou retourne Y_FUNCTIONID_INVALID www yoctopuce com 231 19 R f rence de l API de haut niveau dualpower get_hardwareld YDualPower dualpower gt hardwareld Retou
187. namique Une partie de la librairie de bas niveau est crite en C mais vous n aurez a priori pas besoin d interagir directement avec elle cette partie est fournie sous forme de DLL sous Windows de fichier sous Unix et de fichier dylib sous Mac OS X Tout a t fait pour que l interaction avec cette librairie se fasse aussi simplement que possible depuis Python les diff rentes versions de la librairie dynamique correspondant aux diff rents syst mes d exploitation et architectures sont stock es dans le r pertoire cdi L API va charger automatiquement le bon fichier lors de son initialisation Vous n aurez donc pas vous en soucier Si un jour vous deviez vouloir recompiler la librairie dynamique vous trouverez tout son code source dans la librairie Yoctopuce pour le C Afin de les garder simples tous les exemples fournis dans cette documentation sont des applications consoles Il va de soit que que le fonctionnement des librairies est strictement identiques si vous les int grez dans une application dot e d une interface graphique 1 http www python org download www yoctopuce com FR libraries php SO www yoctopuce com 85 14 Utilisation du Yocto Servo en Python 14 3 Contr le de la fonction Servo Il suffit de quelques lignes de code pour piloter un Yocto Servo Voici le squelette d un fragment de code Python qui utilise la fonction Servo EECH errmsg YRefParam On r cup re l objet repr sentant le
188. nction prend en argument un objet de la classe android content Context ou d une sous classe Il n est pas n cessaire d appeler cette fonction pour acc der au modules travers le r seau Param tres osContext un objet de classe android content Context ou une sous classe www yoctopuce com 123 19 R f rence de l API de haut niveau YAPI FreeAPI YAPI yFreeAPI Lib re la m moire dynamique utilis e par la librairie Yoctopuce is function yFreeAPI nodejs function FreeAPI php function yFreeAPI void yFreeAPI void yFreeAPI procedure yFreeAPI procedure yFreeAPI void FreeAPI synchronized static void FreeAPI def FreeAPI Il n est en g n ral pas n cessaire d appeler cette fonction sauf si vous d sirez lib rer tous les blocs de m moire allou s dynamiquement dans le but d identifier une source de blocs perdus par exemple Vous ne devez plus appeler aucune fonction de la librairie apr s avoir appel yFreeAPT sous peine de crash 124 www yoctopuce com 19 R f rence de l API de haut niveau YAPI GetAPIVersion YAPI yGetAPIVersion Retourne la version de la librairie Yoctopuce utilis e function yGetAPIVersion function GetAPIVersion function yGetAPIVersion string yGetAPIVersion NSString yGetAPIVersion function yGetAPIVersion string function yGetAPIVersion As String String GetAPIVersion String GetAPIVersion
189. nction get_userData Tobject function get_userData As Object object get_userData Object get_userData def get_userData Cet attribut n es pas utilis directement par l API Il est la disposition de l appelant pour stocker un contexte Retourne l objet stock pr c demment par l appelant 206 www yoctopuce com 19 R f rence de l API de haut niveau servo isOnline YServo V rifie si le module h bergeant le servo est joignable sans d clencher d erreur function isOnline node js function isOnline function isOnline bool isOnline BOOL isOnline function isOnline boolean function isOnline As Boolean bool isOnline boolean isOnline def isOnline Si les valeurs des attributs en cache du servo sont valides au moment de l appel le module est consid r joignable Cette fonction ne cause en aucun cas d exception quelle que soit l erreur qui pourrait se produire lors de la v rification de joignabilit Retourne true sile servo est joignable false sinon www yoctopuce com 207 19 R f rence de l API de haut niveau servo isOnline_async YServo V rifie si le module h bergeant le servo est joignable sans d clencher d erreur is function isOnline_async callback context node js function isOnline_async callback context Si les valeurs des attributs en cache du servo sont valides au moment de l appel le module est consid
190. ne RegisterHub error errmsg End End If Console WriteLine Device list M yFirstModule While M IsNot Nothing Cons oer REES Eege ke EE LEE EE e E Namen E a M M nextModule End While End Sub End Module 11 5 Gestion des erreurs Lorsque vous impl mentez un programme qui doit interagir avec des modules USB vous ne pouvez pas faire abstraction de la gestion des erreurs Il y aura forc ment une occasion o un utilisateur aura d branch le p riph rique soit avant de lancer le programme soit m me en pleine op ration La librairie Yoctopuce est pr vue pour vous aider supporter ce genre de comportements mais votre code doit n anmoins tre fait pour se comporter au mieux pour interpr ter les erreurs signal es par la librairie La mani re la plus simple de contourner le probl me est celle que nous avons employ pour les petits exemples pr c dents de ce chapitre avant d acc der un module on v rifie qu il est en ligne avec la m thode isOnline et on suppose ensuite qu il va y rester pendant la fraction de seconde n cessaire ex cuter les lignes de code suivantes Ce n est pas parfait mais a peut suffire dans certains cas II faut toutefois tre conscient qu on ne peut pas totalement exclure une erreur se produisant apr s le isOnline qui pourrait faire planter le programme La seule mani re de l viter est d impl menter une des deux techniques de gestion des erreurs d crites ci des
191. ne ou null siil n y a pas de contr les d alimentation disponibles www yoctopuce com 223 19 R f rence de l API de haut niveau dualpower describe YDualPower Retourne un court texte d crivant le contr le d alimentation au format TYPE NAME SERIAL FUNCTIONID 5s function describe node js function describe php function describe string describe NSString describe function describe string function describe As String string describe String describe def describe Plus pr cis ment TYPE correspond au type de fonction NAME correspond au nom utils lors du premier acc s a la fonction SERIAL correspond au num ro de s rie du module si le module est connect ou unresolved sinon et FUNCTIONID correspond l identifiant mat riel de la fonction si le module est connect Par exemple La methode va retourner Relay MyCustomName relayl RELAYLO1 123456 relayl1 si le module est d j connect ou Relay BadCustomeName relayl unresolved si le module n est pas d j connect Cette methode ne declenche aucune transaction USB ou TCP et peut donc tre utilis dans un debuggeur Retourne une cha ne de caract res d crivant le contr le d alimentation ex Relay MyCustomName relayl RELAYLO1 123456 relayl 224 www yoctopuce com 19 R f rence de l API de haut niveau dua
192. ne application dot e d une interface graphique 15 2 Contr le de la fonction Servo Il suffit de quelques lignes de code pour piloter un Yocto Servo Voici le squelette d un fragment de code Java qui utilise la fonction Servo Fa sell On r cup re l objet repr sentant le module ici connect en local sur USB YAPI RegisterHub 127 0 0 1 servo YServo FindServo SERVORC1 123456 servol Pour g rer le hot plug on v rifie que le module est l if servo isOnline Use servo set position 1 www yoctopuce com FR libraries php 2 www yoctopuce com FR virtualhub php www yoctopuce com 91 15 Utilisation du Yocto Servo en Java DES Voyons maintenant en d tail ce que font ces quelques lignes YAPI RegisterHub La fonction YAPI RegisterHub initialise l API de Yoctopuce en indiquant o les modules doivent tre recherch s Le param tre est l adresse du virtual hub capable de voir les modules Si initialisation se passe mal une exception sera g n r e YServo FindServo La fonction YServo FindServo permet de retrouver un servo en fonction du num ro de s rie de son module h te et de son nom de fonction Mais vous pouvez tout aussi bien utiliser des noms logiques que vous auriez pr alablement configur s Imaginons un module Yocto Servo avec le num ros de s rie SERVORC1 123456 que vous auriez appel MonModule et dont vous auriez nomm la fonction servo MaFonction les cinq appels suiva
193. ne de caract res d crivant le servo ex Relay MyCustomName relayl RELAYLO1 123456 relayl 192 www yoctopuce com 19 R f rence de l API de haut niveau servo get_advertisedValue servo advertisedValue Retourne la valeur courante du servo pas plus de 6 caract res function get_advertisedValue function get_advertisedValue function get_advertisedValue string get_advertisedValue NSString advertisedValue function get_advertisedValue string function get_advertisedValue As String string get_advertisedValue String get_advertisedValue def get_advertisedValue YServo target get_advertisedValue Retourne une cha ne de caract res repr sentant la valeur courante du servo pas plus de 6 caract res En cas YServo d erreur d clenche une exception ou retourne Y_ADVERTISEDVALUE_INVALID www yoctopuce com 193 19 R f rence de l API de haut niveau servo get_errorMessage YServo servo errorMessage Retourne le message correspondant la derni re erreur survenue lors de l utilisation du servo function get_errorMessage function get_errorMessage function get_errorMessage string get_errorMessage NSString errorMessage function get_errorMessage string function get_errorMessage As String string get_errorMessage String get_errorMessage def get_errorMessage Cette m thode est principalement utile lorsqu
194. ney ETS eegene Ale Etage ee return 1 if target any YServo servo yFirstServo if servo NULL cout lt lt No module connected check USB cable lt lt endl return 1 target servo gt module gt get_serialNumber servol yFindServo target servol servo5 yFindServo target servo5 if servol gt isOnline servol gt set position pos immediate switch servo5 gt move pos 3000 smooth transition P elga i cout lt lt Module not connected check identification and USB cable lt lt endl return 0 Contr le de la partie module Chaque module peut tre contr l d une mani re similaire vous trouverez ci dessous un simple programme d exemple affichant les principaux param tres d un module et permettant d activer la balise de localisation include lt iostream gt include lt stdlib h gt include L nsen ert Cl www yoctopuce com 51 9 Utilisation du Yocto Servo en C using namespace std static void usage const char exe cout lt lt usage lt lt exe lt lt lt serial or logical name gt ON OFF lt lt endl EE Int Maln int arc Const char w crow string errmsg Setup the API to use local USB devices stl VRE GassetsH ub Musil EE cy els VAP SUC Chis S a cerr EE EE EE ORNE NUS ocurra neteje 2 usage argv 0 YModule module yFindModule argv 1 use serial or logical
195. nom logique Le nom logique du module est limit a 19 caract res parmi A Z a z 0 9 et productid Identifiant USB du module pr programm la valeur 18 en usine productRelease Num ro de r vision du module hardware preprogrammed at the factory firmwareRelease Version du logiciel embarqu du module elle change chaque fois que le logiciel embarqu est mis jour persistentSettings Etat des r glages persistants du module charg s depuis la m moire non volatile modifi s par l utilisateur ou sauvegard s dans la m moire non volatile luminosity Intensit lumineuse maximale des leds informatives comme la Yocto Led pr sentes sur le module C est une valeur enti re variant entre O leds teintes et 100 leds l intensit maximum La valeur par d faut est 50 Pour changer l intensit maximale des leds de signalisation du module ou les teindre compl tement il suffit donc de modifier cette valeur beacon Etat de la balise de localisation du module upTime Temps coul depuis la derni re mise sous tension du module usbCurrent Courant consomm par le module sur le bus USB en milli amp res rebootCountdown Compte rebours pour d clencher un red marrage spontan du module usbBandwidth Nombre d interfaces utilis par USB L option DOUBLE permet de doubler le d bit USB mais peut saturer un hub USB N oubliez pas d appeler la m thode saveToFlash et de red marrer le module pou
196. nons un module Yocto Servo avec le num ros de s rie SERVORC1 123456 que vous auriez appel MonModule et dont vous auriez nomm la fonction servo MaFonction les cinq appels suivants seront strictement quivalents pour autant que MaFonction ne soit d finie qu une fois pour viter toute ambigu t YServo SERVORC1 123456 servol describe YServo SERVORC1 123456 MaFonction describe YServo MonModule servol describe YServo MonModule MaFonction describe YServo MaFonction describe Pour travailler sur toutes les fonctions Servo la fois utilisez la cible all YServo all describe Pour plus de d tails sur les possibilit s de l ex cutableYServo utilisez YServo help 6 4 Contrdle de la partie module Chaque module peut tre contr l d une mani re similaire a l aide de l ex cutable YModule Par exemple pour obtenir la liste de tous les modules connect s utilisez 28 www yoctopuce com 6 Utilisation du Yocto Servo en ligne de commande YModule inventory Vous pouvez aussi utiliser la commande suivante pour obtenir une liste encore plus d taill e des modules connect s YModule all describe Chaque propri t xxx du module peut tre obtenue gr ce une commande du type get xxxx et les propri t s qui ne sont pas en lecture seule peuvent tre modifi es l aide de la commande set xxx Parexemple YModule SERVORC1 12346 set logicalName MonPremierModule YModule SERVORC1 12346 get logica
197. nregistrement peut tre obtenu en ajoutant a l URL l identifiant de la fonction d sir e et l heure de d part de la tranche http 127 0 0 1 4444 bySerial SERVORC1 12345 dataLogger json id servol utc 1389801080 18 3 Utilisation des librairies dynamiques L API Yoctopuce bas niveau est disponible sous diff rents formats de librairie dynamiques crites en C dont les sources sont disponibles avec l API C Utiliser une de ces librairies bas niveau vous permettra de vous passer du Virtual Hub Filename Plateforme libyapi dylib Max OS X libyapi amd64 so Linux Intel 64 bits libyapi armel so Linux ARM EL libyapi armhf so Linux ARM HL libyapi i386 so Linux Intel 32 bits yapi64 dll Windows 64 bits yapi dll Windows 32 bits Ces librairies dynamiques contiennent toutes les fonctionnalit s n cessaires pour reconstruire enti rement toute l API haut niveau dans n importe quel langage capable d int grer ces librairies Ce chapitre se limite cependant d crire une utilisation de base des modules Contr le d un module Les trois fonctions essentielles de l API bas niveau sont les suivantes int YapilnitAPT int connection type char errmsg int yapiUpdateDeviceList int forceupdate char errmsg int yapiHTTPRequest char device char request char buffer int buffsize int fullsize char errmsg La fonction yapilnitAPI permet d initialiser l API et doit tre appel e une fois en d but du programme Pour une connectio
198. ntr le de la fonction Servo Il suffit de quelques lignes de code pour piloter un Yocto Servo Voici le squelette d un fragment de code C qui utilise la fonction Servo nemde Werer pen ert lol eeleren Heen ee sc String errmsg YServo servo 1 http www microsoft com visualstudio en us products 2010 editions visual cpp express 2 www yoctopuce com FRilibraries php www yoctopuce com 49 9 Utilisation du Yocto Servo en C On r cup re l objet repr sentant le module ici connect en local sur USB yRegisterHub usb errmsg servo yFindServo SERVORC1 123456 servol Pour g rer le hot plug on v rifie que le module est l if servo gt isOnline Ee TOR Voyons maintenant en d tail ce que font ces quelques lignes yocto_api h et yocto_servo h Ces deux fichiers inclus permettent d avoir acc s aux fonctions permettant de g rer les modules Yoctopuce yocto api h doit toujours tre utilis yocto servo h est n cessaire pour g rer les modules contenant un servo comme le Yocto Servo yRegisterHub La fonction yRegisterHub initialise l API de Yoctopuce en indiquant o les modules doivent tre recherch s Utilis e avec le param tre usb elle permet de travailler avec les modules connect s localement la machine Si l initialisation se passe mal cette fonction renverra une valeur diff rente de YAPI SUCCESS et retournera via le param tre errmsg un explication du probl me
199. nts seront strictement quivalents pour autant que MaFonction ne soit d finie qu une fois pour viter toute ambigu t servo YServo FindServo SERVORC1 123456 servol servo YServo FindServo SERVORC1 123456 MaFonction servo YServo FindServo MonModule servol servo YServo FindServo MonModule MaFonction servo YServo FindServo MaFonction YServo FindServo renvoie un objet que vous pouvez ensuite utiliser loisir pour contr ler le servo isOnline La m thode YServo isOnline de l objet renvoy par FindServo permet de savoir si le module correspondant est pr sent et en tat de marche set_position La m thode set position de l objet renvoy par YServo FindServo permet de d placer le plus rapidement possible le servo vers la position sp cifi e Le point milieu correspond la valeur 0 et les deux extr mit s correspondent aux valeurs 1000 et 1000 move La m thode move de l objet renvoy par YServo FindServo permet d effectuer le d placement vers une position d sir e en un intervalle de temps contr l sp cifi en millisecondes Un exemple r el Lancez votre environnement java et ouvrez le projet correspondant fourni dans le r pertoire Examples Doc GettingStarted Yocto Servo de la librairie Yoctopuce Vous reconnaitrez dans cet exemple l utilisation des fonctions expliqu es ci dessus cette fois utilis es avec le d corum n cessaire a en faire un petit programme d exem
200. octo Servo en C oie ccccssesseesesseeteseseeseesesseseseeseeseens 71 EL BT te EE 71 12 2 Utilisation l API yoctopuce dans un projet Visual C oo eee eeeeeeeeeeeeeenneeeeeeneeeeeeneeeeey 71 12 3 Contr le de la fonction Servo iii 72 12 4 C ntr le de lasparti module ss nains entente ren 74 12 5 EE ele Be EC 76 13 Utilisation du Yocto Servo en Delphi 2 2 0 0 ccc cece ceeeeeesteeesteeneenees 79 E ERC e 79 13 2 Contr le de la fonction Servo iii 79 13 3 Contr le de la partie module sisi 81 19 4 Gestion deS TEE 83 14 Utilisation du Yocto Servo en Python 2 ccc cscs esses sesseeeeseeseesesneeneens 85 14 17 FichierS SOUrCRS in eh ina et nee ieee ed ace ce eee 85 1422 lge Vue En EE 85 14 3 Contr le de la fonction Servo iii 86 14 4 Contr le de la partie module sise 87 14 5 G stion Be EC 89 15 Utilisation du Yocto Servo en Java ooo cce se ceeeseeseetesteeeteseeeeneneenenees 91 15 12 Pr paration AER 91 15 2 Contr le de la fonction Servo woe ceecccceecccceccececeeeueceeeececeeceeeaeseeeaeeaeaeeeeeaaeesueaeesaaneenanes 91 15 32 Controle de la parte Mod le ssrin iid cee serit sinned toed hadi a eet 93 15 4 Gestion des TEE 96 16 Utilisation du Yocto Servo avec Android oo eeeeteeeeeeeeeeteeeees 97 16 1 Acces Nati et Virtual UDa a Satta a ens Fa a dant citacac ege EEN ENN 97 16 2 Preparation 4 ccscestesceveedccceeseecceestnds E eaaa aai e AEA ere code AEAEE ANE teen dad E APEE es 97 16 3 eil e ul UC 97 16 4 Ac
201. odule connected check USB cable else serial module gt get serialnumber Print Module to use lt input name serial value Sserial gt lt br gt 2E egaki Cini eewer IN A if _GET beacon ON module gt set beacon Y BEACON ON else module gt set beacon Y BEACON OFF print f serial s lt br gt module gt get serialNumber printf logical name s lt br gt module gt get logicalName Pe Ee ee s lt br gt module gt get_luminosity print beacon if Smodule gt get_beacon Y BEACON ON printf lt input type radio name beacon value ON checked gt ON printf lt input type radio name beacon value OFF gt OFF lt br gt else printf lt input type radio name beacon value ON gt ON printf lt input type radio name beacon value OFF checked gt OFF lt br gt printf upTime s sec lt br gt intVal module gt get upTime 1000 Prince USB current vsmA lt br i smodule get Usbeurrent Nk printf logs lt br gt lt pre gt s lt pre gt module gt get_lastLogs Be lt input type submit value refresh gt lt FORM gt lt BODY gt lt HTML gt Chaque propri t xxx du module peut tre lue grace une m thode du type get_xxxx et les propri t s qui se sont pas en lecture seule peuvent tre modifi es l aide de la m thode set xxx Pour plus de d tails concernant ces fonctions util
202. on get_powerState function get_powerState function get_powerState Y_POWERSTATE_enum get_powerState Y_POWERSTATE_enum powerState function get_powerState Integer function get_powerState As Integer int get_powerState int get_powerState def get_powerState YDualPower target get_powerState Retourne une valeur parmi Y_POWERSTATE_OFF Y_POWERSTATE_FROM_USB et Y_POWERSTATE_FROM_EXT repr sentant la source d alimentation active pour les fonctions du module consommant beaucoup de courant En cas d erreur d clenche une exception ou retourne Y_POWERSTATE_INVALID www yoctopuce com 237 19 R f rence de l API de haut niveau dualpower get_userData YDualPower dualpower userData Retourne le contenu de l attribut userData pr c demment stock l aide de la m thode set_userData function get_userData function get_userData function get_userData void get_userData void userData function get_userData Tobject function get_userData As Object object get_userData Object get_userData def get_userData Cet attribut n es pas utilis directement par l API Il est la disposition de l appelant pour stocker un contexte Retourne l objet stock pr c demment par l appelant 238 www yoctopuce com 19 R f rence de l API de haut niveau dualpower isOnline YDualPower V rifie si le module h bergeant le contr le d alimen
203. onction de callback Retourne rien du tout le r sultat sera pass en param tre la fonction de callback 242 www yoctopuce com 19 R f rence de l API de haut niveau dualpower nextDualPower YDualPower Continue l num ration des contr les d alimentation commenc e l aide de yFirstDualPower function nextDualPower function nextDualPower function nextDualPower YDualPower nextDualPower YDualPower nextDualPower function nextDualPower TYDualPower function nextDualPower As YDualPower YDualPower nextDualPower YDualPower nextDualPower def nextDualPower Retourne un pointeur sur un objet YDual Power accessible en ligne ou nul 1 lorsque l num ration est termin e www yoctopuce com 243 19 R f rence de l API de haut niveau dualpower gt registerValueCallback YDualPower Enregistre la fonction de callback qui est appel e a chaque changement de la valeur publi e is__ function registerValueCallback callback node js function registerValueCallback callback php function registerValueCallback callback int registerValueCallback YDualPowerValueCallback callback int registerValueCallback YDualPowerValueCallback callback pas function registerValueCallback callback TYDualPowerValueCallback Longint vb function registerValueCallback As Integer int registerValueCallback ValueCallback callback int registerValu
204. ondes function reboot secBeforeReboot function reboot secBeforeReboot function reboot secBeforeReboot int reboot int secBeforeReboot int reboot int secBeforeReboot pas_ function reboot secBeforeReboot Longint Longint vo function reboot As Integer int reboot int secBeforeReboot int reboot int secBeforeReboot def reboot secBeforeReboot YModule target reboot secBeforeReboot Param tres secBeforeReboot nombre de secondes avant de red marrer Retourne YAPI_SUCCESS si l op ration se d roule sans erreur En cas d erreur d clenche une exception ou retourne un code d erreur n gatif 178 www yoctopuce com 19 R f rence de l API de haut niveau module gt revertFromFlash YModule Recharge les r glages stock s dans le m moire non volatile du module comme a la mise sous tension du module function revertFromFlash function revertFromFlash function revertFromFlash int revertFromFlash int revertFromFlash function revertFromFlash Longint function revertFromFlash As Integer int revertFromFlash int revertFromFlash def revertFromFlash YModule target revertFromFlash Retourne YAPI_SUCCESS si l op ration se d roule sans erreur En cas d erreur d clenche une exception ou retourne un code d erreur n gatif www yoctopuce com 179 19 R f rence de l API de haut niveau module saveToFlash Sauve les r gl
205. onfiguration courante dans sa m moire non volatile Pour cela il faut utiliser la m thode saveToFlash Inversement il est possible de forcer le module a oublier ses r glages courants en utilisant la m thode revertFromFlash Ce petit exemple ci dessous vous permet changer le nom logique d un module import lt Foundation Foundation h gt import yocto_api h static void usage const char exe NSLog usage s lt serial gt lt newLogicalName gt n exe exat 1 ink Main in acdc Const char argy i MS REEL autoreleasepool Setup the API to use local USB devices if yRegisterHub usb S amp error YAPI SUCCESS NSLog RegisterHub error error llocalizedDescription return rs ii parce lt 2 usage argv 0 NSString serial or name NSString stringWithUTF8String argv 1 YModule module yFindModule serial or name use serial or logical name if module isOnline te arge gt 3 NSString newname NSString stringWithUTF8String argv 2 if yCheckLogicalName newname NSLog Invalid name n newname usage argv 0 module logicalName newname module saveToFlash NSLog Current name n module logicalName 5 Guise 2 NSLog not connected check identification and USB cable n serial or name return 0 Attention le nombre de cycles d criture de la m moire non volatile du module est limit Pass cette limite pl
206. onn es Le bon c ble est disponible sur le shop de Yoctopuce Vous devez raccorder votre module Yocto Servo l aide d un cable USB de type A micro B Si vous branchez un hub USB entre l ordinateur et le module Yocto Servo prenez garde ne pas d passer les limites de courant impos es par USB sous peine de faire face des comportements instables non pr visibles Vous trouverez plus de d tail ce sujet dans le chapitre concernant le montage et la connectique 1 2 Accessoires optionnels Les accessoires ci dessous ne sont pas n cessaires l utilisation du module Yocto Servo mais pourraient vous tre utiles selon l utilisation que vous en faites Il s agit en g n ral de produits courants que vous pouvez vous procurer chez vos fournisseurs habituels de mat riel de bricolage Pour vous viter des recherches ces produits sont en g n ral aussi disponibles sur le shop de Yoctopuce Vis et entretoises Pour fixer le module Yocto Servo un support vous pouvez placer des petites vis de 2 5mm avec une t te de 4 5mm au maximum dans les trous pr vus ad hoc Il est conseill de les visser dans des entretoises filet es que vous pourrez fixer sur le support Vous trouverez plus de d tail ce sujet dans le chapitre concernant le montage et la connectique Micro hub USB Si vous d sirez placer plusieurs modules Yoctopuce dans un espace tr s restreint vous pouvez les connecter ensemble l aide d un micro hub USB Yoctop
207. or use any connected module suitable for the demo Smodule yFirstModule if module skip VirtualHub Smodule Smodule gt nextModule if is null module die No module connected check USB cable else serial module gt get_serialnumber Print Module to use lt input name serial value Sserial gt lt br gt SEU EE eet newname GET newname if yCheckLogicalName newname die Invalid name module gt set_logicalName newname Smodule gt saveToFlash printf Current name s lt br gt Smodule gt get_logicalName print New name lt input name newname value maxlength 19 gt lt br gt gt lt input type submit gt lt FORM gt lt BODY gt lt HTML gt Attention le nombre de cycle d criture de la m moire non volatile du module est limit Pass cette limite plus rien ne garantit de que la sauvegarde des r glages se passera correctement Cette limite li a la technologie employ par le micro processeur du module se situe aux alentour de 100000 cycles Pour r sumer vous ne pouvez employer la fonction saveToFlash que 100000 fois au cours de la vie du module Veillez donc ne pas appeler cette fonction depuis l int rieur d une boucle Enum ration des modules Obtenir la liste des modules connect s se fait l aide de la fonction yFirstModule qui renvoie le premier module trouv il suffit ensuite d appeler la fonc
208. osition 1000 lt a gt lt br gt lt BODY gt lt HTML gt 7 3 Contr le de la partie module Chaque module peut tre contr l d une mani re similaire vous trouverez ci dessous un simple programme d exemple affichant les principaux param tres d un module et permettant d activer la balise de localisation www yoctopuce com 33 7 Utilisation du Yocto Servo en Javascript lt HTML gt lt HEAD gt lt TITLE gt Module Control lt TITLE gt lt SCRIPT type text javascript sre yocto_api js gt lt SCRIPI gt lt SCRIPT language javascriptl 5 type text JavaScript gt BS Use explicit error handling rather than exceptions yDisableExceptions Setup the API to use the VirtualHub on local machine if yRegisterHub http 127 0 0 1 4444 YAPI SUCCESS alerte cannot EE var module function refresh var serial document getElementByld serial value if serial Detect any conected module suitable for the demo module yFirstModule nextModule if module serial module get_serialNumber document getElementByld serial value serial module yFindModule serial if module isOnline document getElementBylIdi msg value Var hemi Meerrr rmodulle ger eserialNumberx lt br gt html logical name module get logicalName lt br gt html luminosity module get_luminosity lt br gt hemi beacons if module get beacon
209. osition d sir e en un intervalle de temps contr l sp cifi en millisecondes Un exemple r el Lancez votre environnement C et ouvrez le projet exemple correspondant fourni dans le r pertoire Examples Doc GettingStarted Yocto Servo de la librairie Yoctopuce Si vous pr f rez travailler avec votre diteur de texte pr f r ouvrez le fichier main cpp vous taperez simplement make dans le r pertoire de l exemple pour le compiler 50 www yoctopuce com 9 Utilisation du Yocto Servo en C Vous reconnaitrez dans cet exemple l utilisation des fonctions expliqu es ci dessus cette fois utilis es avec le d corum n cessaire en faire un petit programme d exemple concret include lyocto api h include lyocto servo h include lt iostream gt include lt stdlib h gt using namespace std static void usage void COURS ge sOemom lt s erllaulmiumioe ts g t EN Abt ONE ET CEE cout sa ny demok logrea limane Edgar Dong e Goue s lt 2 demotany a i 00O rer oo use any discovered device lt lt endl u64 now yGetTickCount dirty active wait loop while yGetTickCount now lt 3000 exit 1 bot 9 2 meliniint arger const char srovdi EE EE HIE string target YServo servol YServo servos Sens pos EEN usage target string argv 1 pos Yint atol aragy 2 4 Setup the API to use local USB devices if yRegisterHub usb errmsg Je YAPT SUCCESS enee lt lt Wi
210. otre code attrape l exception au vol et la g re et tout se passe bien e 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 e 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 chaque ligne de code Il suffit d appeler la fonction yDisableExceptions pour commuter la librairie dans un mode o les exceptions de 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 logique une m thode get state retournera une valeur Y STATE INVALID une m thode get_currentValue retournera une valeur Y CURRENTVALUE INVALID etc Dans tous les cas la valeur retourn e sera du 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
211. otre module et une fen tre r sumant les propri t s de votre Yocto Servo 1 www yoctopuce com FR virtualhub php 2 L interface a t test e avec FireFox 3 IE 6 Safari et Chrome elle ne fonctionne pas avec Op ra www yoctopuce com 3 Premiers pas SERVORC1 004F7 e SERVORC1 004F7 is a 20x45mm which can drive up to 5 RC servos Kernel Serial SERVORC1 004F7 Product name Yocto Servo Logical name Product release 1 Firmware 3375 Consumption 34 mA Beacon Inactive tum on Luminosity 0 Servos Servo 1 Servo 2 Servo 3 Servo 4 3 3 Es Servo 5 Power Power mode Automatic Status usB Ext voltage OV Misc Open API browser pop up Get user manual from yoctopuce com Propri t s du module Yocto Servo Cette fen tre vous permet entre autres de jouer avec votre module Yocto Servo et d en v rifier le fonctionnement vous pouvez bouger les curseur correspondant aux diff rents canaux et ce qui pour effet de bouger les servo correspondant Vous remarquerez que la consommation du module augmente fortement lorsqu un servo bouge et qu il est aliment par USB alors qu elle reste stable si les servos sont aliment s avec une alimentation externe 3 3 Configuration Si dans la liste de modules vous cliquez sur le bouton configure correspondant a votre module la fen tre de configuration apparait Firmware SERVORC1 004F7 Edit parameters for device SERVORC1 004
212. ourne dans le debugger vous pourrez relativement facilement d terminer o le probl me s est produit et voir le message explicatif li l exception e 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 chaque ligne de code Il suffit d appeler la fonction yDisableExceptions pour commuter la librairie dans un mode o les exceptions de 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 logique une m thode get state retournera une valeur Y STATE INVALID une m thode get_currentValue retournera une valeur Y CURRENTVALUE INVALID etc Dans tous les cas la valeur retourn e sera du 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 YAPI SUCCESS si tout va bien et un code d erreur diff rent en cas d chec
213. pdateDeviceList errmsg Force une mise a jour de la liste des modules Yoctopuce connect s yUpdateDeviceList_async callback context Force une mise a jour de la liste des modules Yoctopuce connect s www yoctopuce com 119 19 R f rence de l API de haut niveau YAPI CheckLogicalName YAPI yCheckLogicalName V rifie si un nom donn est valide comme nom logique pour un module ou une fonction function yCheckLogicalName name nodejs function CheckLogicalName name function yCheckLogicalName name bool yCheckLogicalName const string amp name BOOL yCheckLogicalName NSString name function yCheckLogicalName name string boolean function yCheckLogicalName ByVal name As String As Boolean bool CheckLogicalName string name boolean CheckLogicalName String name def CheckLogicalName name Un nom logique valide est form de 19 caract res au maximum choisis parmi A Z a z 0 9 _ et Lorsqu on configure un nom logique avec une cha ne incorrecte les caract res invalides sont ignor s Param tres name une cha ne de caract res contenant le nom v rifier Retourne true sile nom est valide false dans le cas contraire 120 www yoctopuce com 19 R f rence de l API de haut niveau YAPI DisableExceptions yDisableExceptions D sactive l utilisation d exceptions pour la gestion des erreurs function yDisableExceptions function DisableExceptions function
214. ple concret import com yoctopuce YoctoAPI public class Demo public static void main String args i try setup the API to use local VirtualHub KRETSCH ENGER EE EE E EMELIE EE DEER ter ent M27 nomor Ok ex getLocalizedMessage System out printin Ensure that the VirtualHub application is running System exit 1 92 www yoctopuce com 15 Utilisation du Yocto Servo en Java String serra Ue ri args lengen Om serial args 0 else YServo tmp YServo FirstServo if tmp null System out println No module connected check USB cable System exit 1 E serial tmp module get serialNumber catch YAPT Exception ex System out printiin No module connected check USB cable System exit 1 YServo servol YServo FindServo serial servol YServo servo5 YServo FindServo serial servo5 int pos 1000 1000 0 TOr Line p pas 7 cry System out println String format Change postition to d p servol set position p imediat transition servo5 move p 1000 smooth transition YAPI Sleep 1000 ea cha VAPT Exception tex System out println Module not connected check identification and USB Capite prear YAPI FreeAPI 15 3 Contr le de la partie module Chaque module peut tre contr l d une mani re similaire vous trouverez ci dessous un simple programme d exemple affichant les principaux
215. q appels suivants seront strictement quivalents pour autant que MaFonction ne soit d finie qu une fois pour viter toute ambigu t servo YServo FindServo SERVORC1 123456 servol servo YServo FindServo SERVORC1 123456 MaFonction servo YServo FindServo MonModule servol servo YServo FindServo MonModule MaFonction servo YServo FindServo MaFonction YServo FindServo renvoie un objet que vous pouvez ensuite utiliser loisir pour contr ler le servo 4 Pensez a changer le filtre de la fen tre de s lection de fichiers sinon la DLL n appara tra pas 72 www yoctopuce com 12 Utilisation du Yocto Servo en C isOnline La m thode YServo isOnline de l objet renvoy par FindServo permet de savoir si le module correspondant est pr sent et en tat de marche set_position La m thode set position de l objet renvoy par YServo FindServo permet de d placer le plus rapidement possible le servo vers la position sp cifi e Le point milieu correspond la valeur 0 et les deux extr mit s correspondent aux valeurs 1000 et 1000 move La m thode move de l objet renvoy par YServo FindServo permet d effectuer le d placement vers une position d sir e en un intervalle de temps contr l sp cifi en millisecondes Un exemple r el Lancez Visual C et ouvrez le projet exemple correspondant fourni dans le r pertoire Examples Doc GettingStarted Yocto Servo de la librairie Yoc
216. r function set_luminosity ByVal newval As Integer As Integer int set_luminosity int newval int set_luminosity int newval def set_luminosity newval YModule target set_luminosity newval Le param tre est une valeur entre 0 et 100 N oubliez pas d appeler la m thode saveToFlash du module si le r glage doit tre pr serv Param tres newval un entier repr sentant la luminosit des leds informatives du module Retourne YAPI_SUCCESS si l op ration se d roule sans erreur En cas d erreur d clenche une exception ou retourne un code d erreur n gatif www yoctopuce com 183 19 R f rence de l API de haut niveau module set_usbBandwidth YModule module setUsbBandwidth Modifie le nombre d interface USB utilis par le module function set_usbBandwidth newval function set_usbBandwidth newval function set_usbBandwidth newval int set_usbBandwidth Y_USBBANDWIDTH_enum newval int setUsbBandwidth Y_USBBANDWIDTH_enum newval pas function set_usbBandwidth newval Integer integer v function set_usbBandwidth ByVal newval As Integer As Integer int set_usbBandwidth int newval int set_usbBandwidth int newval def set_usbBandwidth newval YModule target set_usbBandwidth newval Vous devez red marrer le module apr s avoir chang ce r glage Param tres newval soit Y_USBBANDWIDTH_ SIMPLE soit Y_USBBANDWIDTH_ DOUBLE selon le nombre d interface USB utilis
217. r que le param tre soit appliqu 5 4 Interface de contr le de l alimentation La librairie de programmation Yoctopuce permet de contr ler la source d alimentation qui doit tre utilis e pour les fonctions du module consommant beaucoup de courant Le module est par ailleurs capable de couper automatiquement l alimentation externe lorsqu il d tecte que la tension a trop chut batterie puis e 20 www yoctopuce com 5 Programmation concepts g n raux logicalName Cha ne de caract res contenant le nom logique du contr le d alimentation initialement vide Cet attribut peut tre chang au bon vouloir de l utilisateur Un fois initialis une valeur non vide il peut servir de point de d part pour acc der directement le contr le d alimentation Si deux contr les d alimentation portent le m me nom logique dans un projet il n y a pas moyen de d terminer lequel va r pondre si l on tente un acc s par ce nom logique Le nom logique du module est limit 19 caract res parmi A Z a z 0 9 et advertisedValue Courte cha ne de caract res r sumant l tat actuel du contr le d alimentation et qui sera publi e automatiquement jusqu au hub parent Pour un contr le d alimentation la valeur publi e est la source d alimentation actuellement active OFF FROM_USB FROM_EXT powerState Source d alimentation active pour les fonctions du module consommant beaucoup de courant OFF si aucune alimentat
218. r que votre projet se construise ensuite correctement il faudra linker avec votre projet la librairie Yoctopuce et les librairies syst mes requises e Pour Windows yocto static lib e Pour Mac OS X libyocto static a IOKit framework et CoreFoundation framework e Pour Linux libyocto static a libm libpthread libusb1 0 et libstdc Attention sous Linux si vous voulez compiler en ligne de commande avec GCC il est en g n ral souhaitable de linker les librairies syst mes en dynamique et non en statique Pour m langer sur la m me ligne de commande des librairies statiques et dynamiques il faut passer les arguments suivants Secs terval berarie Ee NL PVR EME I lptnresd ek ee letdets Int gration en librairie dynamique L int gration de la librairie Yoctopuce sous forme de librairie dynamique permet de produire un ex cutable plus petit que les deux m thodes pr c dentes et de mettre ventuellement a jour cette librairie si un correctif s av rait n cessaire sans devoir recompiler le code source de l application Par contre c est un mode d int gration qui exigera syst matiquement de copier la librairie dynamique sur la machine cible ou l application devra tre lanc e yocto dil sous Windows libyocto so 1 0 1 sous Mac OS X et Linux Pour int grer la librairie dynamique Yoctopuce votre projet vous devez inclure le r pertoire Sources de la librairie Yoctopuce votre IncludePath et ajouter le sous r pertoire de
219. ram tre errmsg devra pointer sur un buffer de www yoctopuce com 113 18 Utilisation avec des langages non support s 255 caract res pour r cup rer un ventuel message d erreur Ce pointeur peut aussi tre null Cette fonction retourne un entier n gatif en cas d erreur ou z ro dans le cas contraire Le format des requ tes est le m me que celui d crit dans la section Virtual Hub et HTTP GET Toutes les cha nes de caract res utilis es par l API sont des cha nes constitu es de caract res 8 bits l Unicode et l UTF8 ne sont pas support s Le r sultat retourn dans la variable buffer respecte le protocole HTTP il inclut donc un header HTTP Ce header se termine par deux lignes vides c est dire une s quence de quatre caract res ASCII 13 10 13 10 Voici un programme d exemple crit en pascal qui utilise la DLL yapi dil pour lire puis changer la luminosit d un module ZA DII FUnECIoOnS IMPOLE function yapiInitAPI mode integer errmsg pansichan santegerjcdeci external yapa dill name yapilinitAPLr function yapiUpdateDeviceList force integer errmsg pansichar integer cdecl external yapi dll name yapiUpdateDeviceList function yapiHTTPRequest device pansichar url pansichar buffer pansichar butisaze imteger var fulllisazesimteger errmsg pansichar integer cdecl external yapi dll name yapiHTTPRequest var errmsgBuffer array 0 256 of ansichar dataBuffer Bene
220. ranch alors qu il tait en cours de reprogrammation il ne fonctionnera probablement plus ne sera plus list dans l interface Mais il sera toujours possible de le reprogrammer correctement en utilisant le programme Virtual Hub en ligne de commande Nom logique du module Le nom logique est un nom choisi par vous qui vous permettra d acc der votre module de la m me mati re qu un nom de fichier vous permet d acc der son contenu Un nom logique doit faire au maximum 19 caract res les caract res autoris s sont les caract res A Z a z 0 9 et Si vous donnez le m me nom logique deux modules raccord s au m me ordinateur et que vous tentez d acc der l un des modules l aide de ce nom logique le comportement est ind termin vous n avez aucun moyen de savoir lequel des deux va r pondre Luminosit Ce param tre vous permet d agir sur l intensit maximale des leds pr sentes sur le module Ce qui vous permet si n cessaire de le rendre plus un peu discret tout en limitant sa consommation Notez que ce param tre agjit sur toutes les leds de signalisation du module y compris la Yocto Led Si vous branchez un module et que rien ne s allume cela veut peut tre dire que sa luminosit a t r gl e z ro Nom logique des fonctions Chaque module Yoctopuce a un num ro de s rie et un nom logique De mani re analogue chaque fonction pr sente sur chaque module Yoctopuce a un nom mat riel et un nom lo
221. re interactive il faudra cr er une interface utilisateur qui stockera dans un fichier ou une base de donn es les actions effectuer sur les modules Yoctopuce Ces actions seront ensuite lues puis ex cut s par le script de contr le Probl mes courants Pour que l API par callback HTTP fonctionne l option de PHP allow_url_fopen doit tre activ e Certains h bergeurs de site web ne l activent pas par d faut Le probl me se manifeste alors avec l erreur suivante error URL file access is disabled in the server configuration Pour activer cette option il suffit de cr er dans le m me r pertoire que le script PHP de contr le un fichier htaccess contenant la ligne suivante php flag allow_url_fopen On Selon la politique de s curit de l h bergeur il n est parfois pas possible d autoriser cette option la racine du site web o m me d installer des scripts PHP recevant des donn es par un POST HTTP Dans ce cas il suffit de placer le script PHP dans un sous r pertoire Limitations Cette m thode de fonctionnement qui permet de passer les filtres NAT moindre frais a malgr tout un prix Les communications tant initi es par le Virtual Hub intervalle plus ou moins r gulier le temps de r action un v nement est nettement plus grand que si les modules Yoctopuce taient pilot s en direct Vous pouvez configurer le temps de r action dans la fen tre ad hoc du Virtual Hub mais il sera n
222. re persistante il est n cessaire de demander au module de sauvegarder sa configuration courante dans sa m moire non volatile Pour cela il faut utiliser la m thode saveToFlash Inversement il est possible de forcer le module oublier ses r glages courants en utilisant la m thode revertFromFlash Ce petit exemple ci dessous vous permet changer le nom logique d un module program savesettings SAPPTYPE CONSOLE uses Sysuti ls yocto api const serial SERVORC1 123456 use serial number or logical name var module TYModule EE newname string begin Setup the API to use local USB devices if yRegisterHub usb errmsg lt gt YAPI SUCCESS then begin Write RegisterHub error errmsg exit end module yFindModule serial if not module isOnline then begin writeln Module not connected check identification and USB cable 82 www yoctopuce com 13 Utilisation du Yocto Servo en Delphi exit end Writeln Current logical name module get_logicalName Write Enter new name Readln newname if not yCheckLogicalName newname then begin Writeln invalid logical name exit end module set logicalName newname module saveToFlash Writeln logical name is now module get_logicalName end Attention le nombre de cycles d criture de la m moire non volatile du module est limit Pass cette limite plus rien ne garantit que la sauve
223. red marre les modifications seront perdues Pour qu elle soient m moris es 34 www yoctopuce com 7 Utilisation du Yocto Servo en Javascript de mani re persistante il est n cessaire de demander au module de sauvegarder sa configuration courante dans sa m moire non volatile Pour cela il faut utiliser la m thode saveToFlash Inversement il est possible de forcer le module oublier ses r glages courants en utilisant la m thode revertFromFlash Ce petit exemple ci dessous vous permet changer le nom logique d un module lt HTML gt lt HEAD gt lt TITLE gt Change module settings lt TITLE gt lt SCRIPT type text javascript src yocto api js gt lt SCRIPT gt lt SCRIPT language javascriptl 5 type text JavaScript gt SSS Use explicit error handling rather than exceptions yDisableExceptions Setup the API to use the VirtualHub on local machine if yRegisterHub http 127 0 0 1 4444 Is VAPI SUCCESS alent tiCannot contact Varina Hub on Elle Ek var module function refresh var serial document getElementById serial value if serial Detect any conected module suitable for the demo module yFirstModule nextModule if module serial module get_serialNumber document getElementBylId serial value serial module yFindModule serial if module isOnline document getElementBylId msg value document getElementById curName
224. ring function functionName ByVal functionindex As Integer As String string functionName int functionindex def functionName functionindex Param tres functionindex l index de la fonction pour laquelle l information est d sir e en commen ant 0 pour la premi re fonction Retourne une cha ne de caract res correspondant au nom logique de la fonction d sir e En cas d erreur d clenche une exception ou retourne un cha ne vide 152 www yoctopuce com 19 R f rence de l API de haut niveau module functionValue Retourne la valeur publi e par la ni me fonction du module function functionValue functionindex function functionValue functionindex function functionValue functionindex string functionValue int functionindex NSString functionValue int functionindex function functionValue functionindex integer string function functionValue ByVal functionindex As Integer As String string functionValue int functionindex def functionValue functionindex Param tres premi re fonction Retourne functionindex l index de la fonction pour laquelle l information est d sir e en commen ant 0 pour la une cha ne de caract res correspondant la valeur publi e par la fonction d sir e En cas d erreur d clenche une exception ou retourne un cha ne vide YModule www yoctopuce com 153 19 R f rence de l API de haut niveau module get
225. rne l identifiant mat riel unique du contr le d alimentation au format SERTAL FUNCTIONID function get_hardwareld function get_hardwareld function get_hardwareld string get_hardwareld NSString hardwareld function get_hardwareld As String string get_hardwareld String get_hardwareld def get_hardwareld L identifiant unique est compos du num ro de s rie du module et de l identifiant mat riel du contr le d alimentation par example RELAYLO1 123456 relayl Retourne une cha ne de caract res identifiant le contr le d alimentation ex RELAYLO1 123456 relayl En cas d erreur d clenche une exception ou retourne Y_HARDWAREID_INVALID 232 www yoctopuce com 19 R f rence de l API de haut niveau dualpower get_logicalName YDualPower dualpower logicalName Retourne le nom logique du contr le d alimentation function get_logicalName function get_logicalName function get_logicalName string get_logicalName NSString logicalName function get_logicalName string function get_logicalName As String string get_logicalName String get_logicalName def get_logicalName YDualPower target get_logicalName Retourne une cha ne de caract res repr sentant le nom logique du contr le d alimentation En cas d erreur d clenche une exception ou retourne Y_LOGICALNAME_INVALID www yoctopuce com 233 19 R f rence de l API de hau
226. rvo YServo FindServo MonModule MaFonction servo YServo FindServo MaFonction YServo FindServo renvoie un objet que vous pouvez ensuite utiliser loisir pour contr ler le servo isOnline La m thode YServo isOnline de l objet renvoy par FindServo permet de savoir si le module correspondant est pr sent et en tat de marche set_position La m thode set position de l objet renvoy par YServo FindServo permet de d placer le plus rapidement possible le servo vers la position sp cifi e Le point milieu correspond la valeur 0 et les deux extr mit s correspondent aux valeurs 1000 et 1000 move La m thode move de l objet renvoy par YServo FindServo permet d effectuer le d placement vers une position d sir e en un intervalle de temps contr l sp cifi en millisecondes Un exemple r el Lancez votre interpr teur Python et ouvrez le script correspondant fourni dans le r pertoire Examples Doc GettingStarted Yocto Servo de la librairie Yoctopuce 86 www yoctopuce com 14 Utilisation du Yocto Servo en Python Vous reconnaitrez dans cet exemple l utilisation des fonctions expliqu es ci dessus cette fois utilis es avec le d corum n cessaire en faire un petit programme d exemple concret usr bin python COUT gs RE el import os sys tmon yoctolapi importi from yocto servo import def usage scriptname os path basename sys argv 0 print Usage print scrip
227. rvo si ils sont d finis soit respectivement le num ro de s rie du module et l identifant mat riel du servo par exemple MyCustomName relayl1l Retourne une chaine de caract res identifiant le servo en utilisant les noms logiques ex MyCustomName relayl En cas d erreur d clenche une exception ou retourne Y_FRIENDLYNAME INVALID 196 www yoctopuce com 19 R f rence de l API de haut niveau servo get_functionDescriptor YServo servo functionDescriptor Retourne un identifiant unique de type YFUN_DESCR correspondant la fonction function get_functionDescriptor function get_functionDescriptor function get_functionDescriptor YFUN_DESCR get_functionDescriptor YFUN_DESCR functionDescriptor function get_functionDescriptor YFUN_DESCR function get_functionDescriptor As YFUN DESCH YFUN_DESCR get_functionDescriptor String get_functionDescriptor def get_functionDescriptor Cet identifiant peut tre utilis pour tester si deux instance de YFunction r f rencent physiquement la m me fonction sur le m me module Retourne un identifiant de type YFUN_DESCR Si la fonction n a jamais t contact e la valeur retourn e sera Y_FUNCTIONDESCRIPTOR_INVALID www yoctopuce com 197 19 R f rence de l API de haut niveau servo get_functionld YServo servo functionid Retourne l identifiant mat riel du servo sans r f rence au module
228. s ou des d g ts mat riels Si les modules sont sous aliment s ils pourraient avoir un comportement bizarre et produire des pannes ou des bugs peu reproductibles Si vous voulez viter tout risque ne cascadez pas les hubs non aliment s et ne branchez pas de p riph rique consommant plus de 100mA derri re un hub non aliment Pour vous faciliter le contr le et la planification de la consommation totale de votre projet tous les modules Yoctopuce sont quip s d une sonde de courant qui indique 5mA pr s la consommation du module sur le bus USB www yoctopuce com 15 16 www yoctopuce com 5 Programmation concepts g n raux L API Yoctopuce a t pens e pour tre la fois simple utiliser et suffisamment g n rique pour que les concepts utilis s soient valables pour tous les modules de la gamme Yoctopuce et ce dans tous les langages de programmation disponibles Ainsi une fois que vous aurez compris comment piloter votre Yocto Servo dans votre langage de programmation favori il est tr s probable qu apprendre utiliser un autre module m me dans un autre langage ne vous prendra qu un minimum de temps 5 1 Paradigme de programmation L API Yoctopuce est une API orient e objet Mais dans un souci de simplicit seules les bases de la programmation objet ont t utilis es M me si la programmation objet ne vous est pas famili re il est peu probable que cela vous soit un obstacle l utilisation d
229. s un programme Contr le natif Dans ce cas de figure le programme pilotant votre projet est directement compil avec une librairie qui offre le contr le des modules C est objectivement la solution la plus simple et la plus l gante pour l utilisateur final II lui suffira de brancher le c ble USB et de lancer votre programme pour que tout fonctionne Malheureusement cette technique n est pas toujours disponible ou m me possible L application utilise la librairie native pour contr ler le module connect en local Contr le natif par DLL Ici l essentiel du code permettant de contr ler les modules se trouve dans une DLL et le programme est compil avec une petite librairie permettant de contr ler cette DLL C est la mani re la plus rapide pour coder le support des modules dans un language particulier En effet la partie utile du code de contr le se trouve dans la DLL qui est la m me pour tous les langages offrir le support pour un nouveau langage se limite coder la petite librairie qui contr le la DLL Du point de de l utilisateur final il y a peu de diff rence il faut simplement tre sur que la DLL sera install e sur son ordinateur en m me temps que le programme principal 22 www yoctopuce com 5 Programmation concepts g n raux L application utilise la DLL pour contr ler nativement le module connect en local Contr le par un service Certain langages ne permettent tout simplement pas d acc d
230. servol isOnline servol set_position pos servo5 move pos 3000 else Console WriteLine Module not connected check identification and USB cable 12 4 Contr le de la partie module Chaque module peut tre contr l d une mani re similaire vous trouverez ci dessous un simple programme d exemple affichant les principaux param tres d un module et permettant d activer la balise de localisation using System Using oystem Collections Generic using System Ling using System Text namespace ConsoleApplicationl class Program static void usage string execname System AppDomain CurrentDomain FriendlyName Console WriteLine Usage Console WriteLine execname lt serial or logical name gt ON OFF System Threading Thread Sleep 2500 Environment Exit 0 static void Main string args YModule m string errmsg if YAPI RegisterHub usb ref errmsg YAPI SUCCESS Console WriteLine RegisterHub error errmsg Environment Exit 0 re args kengt u lt usage m YModule FindModule args 0 use serial or logical name if m isOnline if args Length gt 2 vE args Hk ToUpper ON me set beacon eebe BEACONTOND rE args Hk ToUpper VOF Sn set beacon Module BEACONMOEE IA I Console WriteLine serial bt gersser1alNumbers l Console WriteLine logical name m get logicalName Console WriteLine lu
231. sition YServo servo position Retourne la position courante du servo function get_position function get_position function get_position cpp int get_position int position pas_ function get_position Longint v _ function get_position As Integer cs Int get_position java int get_position def get_position YServo target get_position Retourne un entier repr sentant la position courante du servo En cas d erreur d clenche une exception ou retourne Y_POSITTION_INVALID 204 www yoctopuce com 19 R f rence de l API de haut niveau servo get_range servo range Retourne la plage d utilisation du servo function get_range function get_range function get_range int get_range int range function get_range Longint function get_range As Integer int get_range int get_range def get_range YServo target get_range Retourne un entier repr sentant la plage d utilisation du servo YServo En cas d erreur d clenche une exception ou retourne Y_RANGE_INVALID www yoctopuce com 205 19 R f rence de l API de haut niveau servo get_userData YServo servo userData Retourne le contenu de l attribut userData pr c demment stock l aide de la m thode set_userData function get_userData function get_userData function get_userData void get_userData void userData fu
232. souder un fil USB directement dans les trous espac s de 1 27mm pr vus cet effet pr t du connecteur www yoctopuce com 2 Pr sentation Le Yocto bouton Le Yocto bouton a deux fonctions Premi rement il permet d activer la Yocto balise voir la Yocto led ci dessous Deuxi mement si vous branchez un Yocto module en maintenant ce bouton appuy il vous sera possible de reprogrammer son firmware avec une nouvelle version Notez qu il existe une m thode plus simple pour mettre jour le firmware depuis l interface utilisateur mais cette m thode l peut fonctionner m me lorsque le firmware charg sur le module est incomplet ou corrompu La Yocto Led En temps normal la Yocto Led sert indiquer le bon fonctionnement du module elle met alors une faible lumi re bleue qui varie lentement mimant ainsi une respiration La Yocto Led cesse de respirer lorsque le module ne communique plus par exemple si il est aliment par un hub sans connexion avec un ordinateur allum Lorsque vous appuyez sur le Yocto bouton la Led passe en mode Yocto balise elle se met alors flasher plus vite et beaucoup plus fort dans le but de permettre une localisation facile d un module lorsqu on en a plusieurs identiques II est en effet possible de d clencher la Yocto balise par logiciel tout comme il est possible de d tecter par logiciel une Yocto balise allum e La Yocto Led a une troisi me fonctionnalit moins plaisante lorsque ce
233. sous 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 e Si votre code attrape l exception au vol et la g re et tout se passe bien e 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 e 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 chaque ligne de code Il suffit d appeler la fonction yDisableExceptions pour commuter la librairie dans un mode o les exceptions de 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 logique une m thode get state retournera une valeur Y STATE INVALID une m thode get currentValue retournera une vale
234. stLogs As String string get_lastLogs String get_lastLogs def get_lastLogs YModule target get_lastLogs Cette methode retourne les derniers logs qui sont encore stock dans le module Retourne une chaine de charact re contenant les derniers logs du module 160 www yoctopuce com 19 R f rence de l API de haut niveau module get_logicalName module gt logicalName Retourne le nom logique du module function get_logicalName function get_logicalName function get_logicalName string get_logicalName NSString logicalName function get_logicalName string function get_logicalName As String string get_logicalName String get_logicalName def get_logicalName YModule target get_logicalName Retourne une chaine de caract res repr sentant le nom logique du module YModule En cas d erreur d clenche une exception ou retourne Y_LOGICALNAME_INVALID www yoctopuce com 161 19 R f rence de l API de haut niveau module get_luminosity module luminosity Retourne la luminosit des leds informatives du module valeur entre O et 100 function get_luminosity function get_luminosity function get_luminosity cep int get_luminosity _ int luminosity pas function get_luminosity Longint v function get_luminosity As Integer cs int get_luminosity java int get_luminosity def get_luminosity
235. sucre mais vous n aurez a priori pas besoin d interagir directement avec elle tout a t fait pour que l interaction soit le plus simple possible depuis Objective C Vous allez rapidement vous rendre compte que l API Objective C d finit beaucoup de fonctions qui retournent des objets Vous ne devez jamais d sallouer ces objets vous m me Ils seront d sallou s automatiquement par l API la fin de l application Afin des les garder simples tous les exemples fournis dans cette documentation sont des applications consoles Il va de soit que que les fonctionnement des librairies est strictement identiques si vous les int grez dans une application dot e d une interface graphique Vous trouverez sur le blog de Yoctopuce un exemple d taill avec des s quences vid o montrant comment int grer les fichiers de la librairie vos projets 10 1 Contr le de la fonction Servo Lancez Xcode 4 2 et ouvrez le projet exemple correspondant fourni dans le r pertoire Examples Doc GettingStarted Yocto Servo de la librairie Yoctopuce import lt Foundation Foundation h gt EE EE import yocto servo h static void usage void NSiogi iG usage demo lt serialnumber i L000 N er LOOON Ms NSLog demo lt logical mames gt 000 CN Lolo TA NSLog demorany big 2 e NI O0 CII use any discovered device 1 www yoctopuce com FR libraries php 2 www yoctopuce com FR article nouvelle librairie objective
236. synchrone n existe qu en Javascript Elle utilise une fonction de callback plut t qu une simple valeur de retour pour viter de bloquer la VM Javascript de Firefox qui n impl mente pas le passage de contr le entre threads durant les appels d entr e sortie bloquants Param tres callback fonction de callback qui sera appel e d s que le r sultat sera connu La fonction callback re oit trois arguments le contexte fourni par l appelant l objet fonction concern et l instance demand e de YModule context contexte fourni par l appelant et qui sera pass tel quel la fonction de callback Retourne rien du tout le r sultat sera pass en param tre la fonction de callback 202 www yoctopuce com 19 R f rence de l API de haut niveau servo get_neutral YServo servo neutral Retourne la dur e en microsecondes de l impulsion correspondant au neutre du servo function get_neutral function get neutral function get_neutral int get_neutral int neutral function get_neutral Longint function get_neutral As Integer int get_neutral int get_neutral def get_neutral YServo target get_neutral Retourne un entier repr sentant la dur e en microsecondes de l impulsion correspondant au neutre du servo En cas d erreur d clenche une exception ou retourne Y_NEUTRAL_INVALID www yoctopuce com 203 19 R f rence de l API de haut niveau servo get_po
237. t armhf Dans ce cas il est donc recommend d appeler SelectArchitecture avant tout autre appel la librairie pour forcer l utilisation d une architecture sp cifi e Param tres arch une cha ne de caract re sp cifiant l architecture utiliser Les valeurs possibles sont armhf armel D i 386 x86 64 32bit 64bit Retourne rien En cas d erreur d clenche une exception 136 www yoctopuce com 19 R f rence de l API de haut niveau YAPI SetDelegate YAPI ySetDelegate Objective C uniquement Enregistre un objet d l gu qui doit se conformer au procole YDeviceHotPlug void ySetDelegate id object Les methodes yDeviceArrival et yDeviceRemoval seront appel es pendant l xecution de la fonction yHandleDeviceList que vous devrez appeler r guli rement Param tres object un objet qui soit se conformer au procol YAPIDelegate ounil www yoctopuce com 137 19 R f rence de l API de haut niveau YAPI SetTimeout YAPI ySetTimeout Appelle le callback sp cifi apr s un temps d attente sp cifi function ySetTimeout callback ms_timeout arguments function SetTimeout callback ms_timeout arguments Cette fonction se comporte plus ou moins comme la fonction Javascript set Timeout mais durant le temps d attente elle va appeler yHandleEvents et yUpdateDeviceList p riodiquement pour maintenir l API jour avec les modules connect s
238. t input type radio name pos value 0 gt Move to center lt br gt lt input type radio name pos value 500 gt Move to 500 lt br gt lt input type radio name pos value 1000 gt Move to 1000 lt br gt lt input type submit gt lt FORM gt lt BODY gt lt HTML gt 8 3 Contr le de la partie module Chaque module peut tre contr l d une mani re similaire vous trouverez ci dessous un simple programme d exemple affichant les principaux param tres d un module et permettant d activer la balise de localisation lt HTML gt lt HEAD gt lt TITLE gt Module Control lt TITLE gt lt HEAD gt lt BODY gt www yoctopuce com 41 8 Utilisation du Yocto Servo en PHP lt FORM method get gt lt php include yocto api php Use explicit error handling rather than exceptions yDisableExceptions Setup the API to use the VirtualHub on local machine if yRegisterHub http 127 0 0 1 4444 Serrmsg YAPI SUCCESS die Cannot contact eersten on Ive OEM EEmS Or Sserial CEU serrait ae Siess He Hit 2 Check if a specified module is available online Smodule yFindModule serial if Smodule gt isOnline die Module not connected check serial and USB cable else or use any connected module suitable for the demo Smodule yFirstModule if module skip VirtualHub Smodule Smodule gt nextModule if is_null Smodule die No m
239. t niveau dualpower get_module YDualPower dualpower module Retourne l objet YModule correspondant au module Yoctopuce qui h berge la fonction is function get module node js function get_module php_ function get_module YModule get_module YModule module function get_module TYModule function get_module As YModule YModule get_module YModule get_module def get_module Si la fonction ne peut tre trouv e sur aucun module l instance de YModule retourn e ne sera pas joignable Retourne une instance de YModule 234 www yoctopuce com 19 R f rence de l API de haut niveau dualpower get_ module async YDualPower dualpower module_async Retourne l objet YModule correspondant au module Yoctopuce qui h berge la fonction function get_module_async callback context function get_module_async callback context Si la fonction ne peut tre trouv e sur aucun module l instance de YModule retourn e ne sera pas joignable Cette version asynchrone n existe qu en Javascript Elle utilise une fonction de callback plut t qu une simple valeur de retour pour viter de bloquer la VM Javascript de Firefox qui n impl mente pas le passage de contr le entre threads durant les appels d entr e sortie bloquants gt Param tres callback fonction de callback qui sera appel e d s que le r sultat sera connu La fonction callback re oit trois arguments
240. t pour une architecture diff rente dans de nombreuses ann es e 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 Sources de la librairie Yoctopuce votre IncludePath et d ajouter tous les fichiers de ce r pertoire y compris le sous r pertoire yapi votre projet Pour que votre projet se construise ensuite correctement il faudra linker avec votre projet les librairies systemes requises a savoir e Pour Windows les librairies sont mises automatiquement e Pour Mac OS X IOKit framework et CoreFoundation framework e Pour Linux libm libpthread libusb1 0 et libstdc Int gration en librairie statique L int gration de de la librairie Yoctopuce sous forme de librairie statique est une mani re plus simple de construire un petit ex cutable utilisant des modules Yoctopuce Elle permet une compilation rapide du programme en une seule commande Elle ne requiert pas non plus l installation d une librairie dynamique sp cifique a Yoctopuce sur le syst me final tout est dans l ex cutable Pour int grer la librairie statique Yoctopuce a votre projet vous devez inclure le r pertoire Sources de la librairie Yoctopuce a votre IncludePath et ajouter le sous r pertoire de Binaries correspondant a votre syst me d exploitation a votre LibPath Ensuite pou
241. t string amp func YServo yFindServo NSString func function yFindServo func string TYServo function yFindServo ByVal func As String As YServo YServo FindServo string func YServo FindServo String func def FindServo func L identifiant peut tre sp cifi sous plusieurs formes e NomLogiqueFonction e NoSerieModule dentifiantFonction e NoSerieModule NomLogiqueFonction e NomLogiqueModule ldentifiantMat riel e NomLogiqueModule NomLogiqueFonction Cette fonction n exige pas que le servo soit en ligne au moment ou elle est appel e l objet retourn sera n anmoins valide Utiliser la m thode YServo isOnline pour tester si le servo est utilisable un moment donn En cas d ambiguit lorsqu on fait une recherche par nom logique aucune erreur ne sera notifi e la premi re instance trouv e sera renvoy e La recherche se fait d abord par nom mat riel puis par nom logique Param tres func une cha ne de caract res qui r f rence le servo sans ambigu t Retourne un objet de classe YServo qui permet ensuite de contr ler le servo 190 www yoctopuce com 19 R f rence de l API de haut niveau YServo FirstServo YServo yFirstServo Commence l num ration des servo accessibles par la librairie function yFirstServo function FirstServo function yFirstServo YServo yFirstServo YServo yFirstServo function yFirstServo TYServo function yFirstServo As
242. tItemAtPosition pos toString module YModule FindModule hwid DisplayModuleInfo Override public void onNothingSelected AdapterView lt gt arg0 public void saveName View view if module null BCE EditText edit EditText findViewById R id newname String newname edit getText toString try if YAPI CheckLogicalName newname Toast makeText getApplicationContext Invalid name Toast LENGTH LONG show return UL newname module set logicalName newname module saveToFlash do not forget this edit setText catch YAPI Exception ex ex printStackTrace DisplayModuleInfo r www yoctopuce com 105 16 Utilisation du Yocto Servo avec Android Attention le nombre de cycles d criture de la m moire non volatile du module est limit Pass cette limite plus rien ne garantit que la sauvegarde des r glages se passera correctement Cette limite li e la technologie employ e par le micro processeur du module se situe aux alentour de 100000 cycles Pour r sumer vous ne pouvez employer la fonction YModule saveToFlash que 100000 fois au cours de la vie du module Veillez donc a ne pas appeler cette fonction depuis l int rieur d une boucle Enumeration des modules Obtenir la liste des modules connect s se fait a l aide de la fonction YModule yFirstModule qui renvoie le premier module trouv il suffit ensuit
243. t_usbBandwidth function get_usbBandwidth Y_USBBANDWIDTH_enum get_usbBandwidth Y_USBBANDWIDTH_enum usbBandwidth pas function get_usbBandwidth Integer ve function get_usbBandwidth As Integer int get_usbBandwidth int get_usbBandwidth def get_usbBandwidth YModule target get_usbBandwidth Retourne YModule soit Y_USBBANDWIDTH_ SIMPLE soit Y USBBANDWIDTH_ DOUBLE selon le nombre d interface USB utilis par le module En cas d erreur d clenche une exception ou retourne Y_USBBANDWIDTH_INVALID 170 www yoctopuce com 19 R f rence de l API de haut niveau module get_usbCurrent YModule module usbCurrent Retourne le courant consomm par le module sur le bus USB en milliamp res function get_usbCurrent function get_usbCurrent function get_usbCurrent int get_usbCurrent int usbCurrent function get_usbCurrent Longint function get_usbCurrent As Integer int get_usbCurrent int get_usbCurrent def get_usbCurrent YModule target get_usbCurrent Retourne un entier repr sentant le courant consomm par le module sur le bus USB en milliamp res En cas d erreur d clenche une exception ou retourne Y_USBCURRENT_INVALID www yoctopuce com 171 19 R f rence de l API de haut niveau module get_userData YModule module gt userData Retourne le contenu de l attribut userData pr c demment stock l ai
244. tation est joignable sans d clencher d erreur function isOnline node js function isOnline function isOnline bool isOnline BOOL isOnline function isOnline boolean function isOnline As Boolean bool isOnline boolean isOnline def isOnline Si les valeurs des attributs en cache du contr le d alimentation sont valides au moment de l appel le module est consid r joignable Cette fonction ne cause en aucun cas d exception quelle que soit l erreur qui pourrait se produire lors de la v rification de joignabilit Retourne true sile contr le d alimentation est joignable false sinon www yoctopuce com 239 19 R f rence de l API de haut niveau dualpower isOnline asynce YDualPower V rifie si le module h bergeant le contr le d alimentation est joignable sans d clencher d erreur _is function isOnline_async callback context node js function isOnline_async callback context Si les valeurs des attributs en cache du contr le d alimentation sont valides au moment de l appel le module est consid r joignable Cette fonction ne cause en aucun cas d exception quelle que soit l erreur qui pourrait se produire lors de la v rification de joignabilit Cette version asynchrone n existe qu en Javascript Elle utilise une fonction de callback plut t qu une simple valeur de retour pour viter de bloquer la machine virtuelle Javascript avec une attente active Param
245. te a RegisterHub yRegisterDeviceArrivalCallback arrivalCallback Enregistre une fonction de callback qui sera appel e a chaque fois qu un module est branch yRegisterDeviceRemovalCallback removalCallback Enregistre une fonction de callback qui sera appel e a chaque fois qu un module est d branch yRegisterHub url errmsg Configure la librairie Yoctopuce pour utiliser les modules connect s sur une machine donn e yRegisterHubDiscoveryCallback callback 118 www yoctopuce com 19 R f rence de l API de haut niveau Enregistre une fonction de callback qui sera appel e chaque fois qu un Hub r seau ou un VirtualHub est d tect sur le r seau local yRegisterLogFunction logfun Enregistre une fonction de callback qui sera appell e chaque fois que l API a quelque chose dire ySelectArchitecture arch S lectionne manuellement l architecture de la libraire dynamique utiliser pour acc der USB ySetDelegate object Objective C uniquement Enregistre un objet d l gu qui doit se conformer au procole YDeviceHotPlug ySetTimeout callback ms_timeout arguments Appelle le callback sp cifi apr s un temps d attente sp cifi ySleep ms_duration errmsg Effectue une pause dans l ex cution du programme pour une dur e sp cifi e yUnregisterHub url Configure la librairie Yoctopuce pour ne plus utiliser les modules connect s sur une machine pr alablement enregistrer avec RegisterHub yU
246. tement recommand de lire attentivement les sp cifications techniques d un produit fonctionnant sous Android avant d esp rer le voir fonctionner avec des modules Yoctopuce Disposer d une version correcte d Android et de ports USB fonctionnant en mode host ne suffit malheureusement pas pour garantir un bon fonctionnement avec des modules Yoctopuce sous Android En effet certains constructeurs configurent leur image Android afin que les p riph riques autres que clavier et mass storage soit ignor s et cette configuration est difficilement d tectable En l tat actuel des choses le meilleur moyen de savoir avec certitude si un mat riel Android sp cifique fonctionne avec les modules Yoctopuce consiste essayer Mat riel support La librairie est test e et valid e sur les machines suivantes e Samsung Galaxy S3 e Samsung Galaxy Note 2 e Google Nexus 5 e Google Nexus 7 Acer Iconia Tab A200 e Asus Tranformer Pad TF300T e Kurio 7 Si votre machine Android n est pas capable de faire fonctionner nativement des modules Yoctopuce il vous reste tout de m me la possibilit de contr ler a distance des modules pilot s par un VirtualHub sur un autre OS ou un YoctoHub 16 4 Activer le port USB sous Android Par d faut Android nautorise pas une application a acc der aux p riph riques connect s au port USB Pour que votre application puisse interagir avec un module Yoctopuce branch directement sur votre tablette sur un port
247. thode isOnline de l objet renvoy par yFindServo permet de savoir si le module correspondant est pr sent et en tat de marche set_position La m thode set position de l objet renvoy par yFindServo permet de d placer le plus rapidement possible le servo vers la position sp cifi e Le point milieu correspond la valeur 0 et les deux extr mit s correspondent aux valeurs 1000 et 1000 move La m thode move de l objet renvoy par yFindServo permet d effectuer le d placement vers une position d sir e en un intervalle de temps contr l sp cifi en millisecondes 10 2 Contr le de la partie module Chaque module peut tre contr l d une mani re similaire vous trouverez ci dessous un simple programme d exemple affichant les principaux param tres d un module et permettant d activer la balise de localisation import lt Foundation Foundation h gt import yocto api h static void usage const char exe NSLog usage s lt serial or logical name gt ON OFF n exe exit 1 ime main kink arge const char arr NSError error autoreleasepool Setup the API to use local USB devices HAU VAP Register Hub Gr usb error sVvAr i SUCCH SS NSLog RegisterHub error error localizedDescription return 17 Tilacde 2 usage argv 0 NSString serial or name NSString stringWithUTF8String argv 1 YModule module YModule FindModule serial or name
248. tion nextModule de cet objet pour trouver les modules suivants et ce tant que la r ponse n est pas un NULI Ci dessous un petit exemple listant les module connect s lt HTML gt lt HEAD gt lt TITLE gt inventory lt TITLE gt lt HEAD gt lt BODY gt lt H1 gt Device list lt H1 gt AIME lt php www yoctopuce com 43 8 Utilisation du Yocto Servo en PHP include yocto api php yRegisterHub http 127 0 0 1 4444 Smodule yFirstModule while is null Smodule PEINcE ss ss lt br gt omodulle get serral Numbers i7 module gt get productName Smodule Smodule gt nextModule Le Sy WS lt BODY gt lt HTML gt 8 4 API par callback HTTP et filtres NAT La librairie PHP est capable de fonctionner dans un mode sp cial appel Yocto API par callback HTTP Ce mode permet de contr ler des modules Yoctopuce install s derri re un filtre NAT tel qu un routeur DSL par exemple et ce sans avoir un ouvrir un port L application typique est le contr le de modules Yoctopuce situ s sur r seau priv depuis un site Web publique Le filtre NAT avantages et inconv nients Un routeur DSL qui effectue de la traduction d adresse r seau NAT fonctionne un peu comme un petit central t l phonique priv les postes internes peuvent s appeler l un l autre ainsi que faire des appels vers l ext rieur mais vu de l ext rieur il n existe qu un num ro de t l phone officiel attribu
249. tiver le port USB sous Android A 98 16 5 Contr le de la fonction Servo iii 100 16 6 Contr le de la partie module ooo eee ceseeeeeeneeeeeeneeeeteaaeeeeeeaeeeseeaeeeeseaeeeeeeeeeeseeaeeeeaaes 102 16 7 Gestion des erreurs iii 107 17 Programmation avanc e ooo ccc cssesssssseestessesecseesseesecstecseesseeseeseesneeseestes 109 17 1 Programmation par v nements iii 109 18 Utilisation avec des langages non support s 2 cece 111 18 1 Ligne de commande sua hante nant eEEEEENEEEENRNEd Eden 111 18 2 e EE UE SEE TP GET R ees eB ee A ee Se res 111 18 3 Utilisation des librairies dynamiques o oo eee ee ceee ee eene eee eeaeeeeeeeeeeteeeeeteaeeeeteeeeeeeaeaee 113 18 4 Port de la librairie haut niveau iii 116 19 R f rence de l API de haut niveau ooo neseeseeeseestessteseeseen 117 E EI ele EE 118 19 2 Interface de contr le du module eceeeeeeceeeeeeeteeeeeeeeeeeneeeeeeeeeteaeeeeeeseeceeeeeeeseeeeneeeeeeess 143 19 3 Interface de la fonction Servo ii 188 19 4 Interface de contr le de l alimentation 220 20 Probl mes courants eet 249 AE EEEE EE 249 20 2 Plateformes ARM HF et EL iii 250 A Mee TEE 251 Blueprint EE 253 1 Introduction Le module Yocto Servo est un module de 45x20mm qui permet de commander jusqu cinq servo moteurs de mod lisme Le module peut tre aliment par un alimentation externe mais il supporte aussi de ne fonctionner qu avec le bus USB ce qui lui permet de piloter un petit servo sans
250. tname lt serial number gt lt channel gt positroni print scriptname lt logical name gt lt channel gt position printiscripieneme any lt channel gt position print Example print scriptname any 2 500 sys exit def die msg EE reese if len sys argv lt 3 usage target sys argv 1 upper channel sys argv 2 position int sys argv 3 Setup the API to use local USB devices errmsg YRefParam if YAPI RegisterHub usb errmsg YAPI SUCCESS sys exit init error errmsg value if target ANY retreive any servo then find its serial servo YServo FirstServo if servo is None die No module connected m servo get module target m get serialNumber print using target servo YServo FindServo target servo channel if not servo isOnline die device not connected servo move position 1000 14 4 Contrdle de la partie module Chaque module peut tre contr l d une mani re similaire vous trouverez ci dessous un simple programme d exemple affichant les principaux param tres d un module et permettant d activer la balise de localisation usr bin python coding utf 8 impo ceos SVS from yocto api import def usage sys exit usage demo lt serial or logical name gt ON OFF errmsg YRefParam if YAPI RegisterHub usb errmsg YAPI SUCCESS sys exit RegisterHub error str errmsg if len sys argv lt
251. topuce Vous reconnaitrez dans cet exemple l utilisation des fonctions expliqu es ci dessus cette fois utilis es avec le d corum n cessaire en faire un petit programme d exemple concret using System Using Systm Collections Generac using System Ling using System Text namespace ConsoleApplicationl class Program static void usage string execname System AppDomain CurrentDomain FriendlyName Console WriteLine Usage Console Writehiane excenamet lt serialynumber gt lee Console Writehine exconamnct s logucdil mame sie OOO rere LOO RL Console WriteLine execname any 1000 1000 System Threading Thread Sleep 2500 Environment Exit 0 static void Main string args string errmsg string target YServo servol YServo servo5 ink poss if args Length lt 2 usage target args 0 ToUpper pos Convert lolne221la ras Eh if YAPI RegisterHub usb ref errmsg YAPI SUCCESS Console WriteLine RegisterHub error errmsg Environment Exit 0 if target ANY servol YServo FirstServo if servol null Console WriteLine No module connected check USB cable Environment Exit 0 EE EE EE EE EE EE Number servol YServo FindServo target servol www yoctopuce com 73 12 Utilisation du Yocto Servo en C servo5 YServo FindServo target servo5 if
252. topuce offre une autre alternative pour la gestion des erreurs permettant de faire un programme robuste sans devoir attraper les exceptions chaque ligne de code Il suffit d appeler la fonction yDisableExceptions pour commuter la librairie dans un mode ou les exceptions de 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 logique une m thode get state retournera une valeur Y STATE INVALID une m thode get _currentValue retournera une valeur Y CURRENTVALUE INVALID etc Dans www yoctopuce com 89 14 Utilisation du Yocto Servo en Python tous les cas la valeur retourn e sera du 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 YAPI SUCCESS si tout va bien et un code d erreur diff rent en cas d chec 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 un
253. tourne un code d erreur n gatif 128 www yoctopuce com 19 R f rence de l API de haut niveau YAPI PreregisterHub yPreregisterHub Alternative plus tolerante a RegisterHub function yPreregisterHub url errmsg function PreregisterHub url errmsg function yPreregisterHub url amp errmsg YRETCODE yPreregisterHub const string amp url string amp errmsg YRETCODE yPreregisterHub NSString url NSError errmsg function yPreregisterHub url string var errmsg string integer function yPreregisterHub ByVal url As String ByRef errmsg As String As Integer int PreregisterHub string url ref string errmsg synchronized static int PreregisterHub String url def PreregisterHub url errmsg None YAPI Cette fonction a le m me but et la m me param tres que la fonction RegisterHub mais contrairement celle ci PreregisterHub ne d clanche pas d erreur si le hub choisi n est pas joignable au moment de l appel II est ainsi possible d enregistrer un hub r seau ind pendemment de la connectivit afin de tenter de ne le contacter que lorsqu on cherche r ellement un module YAPI_SUCCESS si l op ration se d roule sans erreur Param tres url une cha ne de caract res contenant usb callback ou l URL racine du VirtualHub utiliser errmsg une cha ne de caract res pass e par r f rence dans laquelle sera stock un ventuel message d erreur Retourne En cas d erreur
254. tout et pour tout Ensuite vous pourrez appeler la fonction globale yFind ou yFirst correspondant votre module pour pouvoir interagir avec lui Pour utiliser les fonctions d crites ici vous devez inclure lt script type text javascript src yocto_api js gt lt script gt var yoctolib require yoctolib var YAPI yoctolib YAPI var Module yoctolib YModule require_once yocto_api php include yocto_api h import yocto_api h uses yocto_api vb yocto api vb yocto_api cs import com yoctopuce YoctoAPI YModule from yocto_api import Fonction globales yCheckLogicalName name V rifie si un nom donn est valide comme nom logique pour un module ou une fonction yDisableExceptions D sactive l utilisation d exceptions pour la gestion des erreurs yEnableExceptions R active l utilisation d exceptions pour la gestion des erreurs yEnableUSBHost osContext Cette fonction est utilis e uniquement sous Android yFreeAPI Lib re la m moire dynamique utilis e par la librairie Yoctopuce yGetAP Version Retourne la version de la librairie Yoctopuce utilis e yGetTickCount Retourne la valeur du compteur monotone de temps en millisecondes yHandleEvents errmsg Maintient la communication de la librairie avec les modules Yoctopuce ylnitAPI mode errmsg Initialise la librairie de programmation de Yoctopuce explicitement yPreregisterHub url errmsg Alternative plus toleran
255. tre code attrape l exception au vol et la g re et tout se passe bien e 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 e Sinon l exception va crasher votre programme boum www yoctopuce com 61 10 Utilisation du Yocto Servo en Objective C 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 chaque ligne de code Il suffit d appeler la fonction yDisableExceptions pour commuter la librairie dans un mode o les exceptions de 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 logique une m thode get state retournera une valeur Y STATE INVALID une m thode get currentValue retournera une valeur Y CURRENTVALUE INVALID etc Dans tous les cas la valeur retourn e sera du 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
256. trouv il suffit ensuite d appeler la fonction nextModule de cet objet pour trouver les modules suivants et ce tant que la r ponse n est pas un NULL Ci dessous un petit exemple listant les module connect s lt HTML gt lt HEAD gt lt TITLE gt Modules inventory lt TITLE gt lt SCRIPT type text javascript src lyocto api js gt lt SCRIPT gt lt SCRIPT language javascriptl 5 type text JavaScript gt See Use explicit error handling rather than exceptions yDisableExceptions Setup the API to use the VirtualHub on local machine if yRegisterHub http 127 0 0 1 4444 VAPI SUCCESS alent Me anno EE EE Orn function refresh yUpdateDeviceList var htmlcode var module yFirstModule while module htmlcode module get serialNumber tmodule get_productName lt br gt module module nextModule document getElementById list innerHTML htmlcode setTimeout refresh 500 gt lt SCRIPT gt lt HEAD gt lt BODY onload refresh gt lt H1 gt Device list lt H1 gt lt tt gt lt span id list gt lt span gt lt tt gt lt BODY gt lt HTML gt 7 4 Gestion des erreurs Lorsque vous impl mentez un programme qui doit interagir avec des modules USB vous ne pouvez pas faire abstraction de la gestion des erreurs Il y aura forc ment une occasion o un utilisateur aura d branch le p riph rique soit avant de lancer le programme soit
257. ts dans ce manuel sont pr sents dans les librairies de programmation Dans certains langages les librairies comprennent aussi quelques applications graphiques compl tes avec leur code source 1 http www yoctopuce com FR libraries php 24 www yoctopuce com 5 Programmation concepts g n raux Une fois que vous maitriserez la programmation de base de votre module vous pourrez vous int resser au chapitre concernant la programmation avanc e qui d crit certaines techniques qui vous permettront d exploiter au mieux votre Yocto Servo www yoctopuce com 25 26 www yoctopuce com 6 Utilisation du Yocto Servo en ligne de commande Lorsque vous d sirez effectuer une op ration ponctuelle sur votre Yocto Servo comme la lecture d une valeur le changement d un nom logique etc vous pouvez bien sur utiliser le Virtual Hub mais il existe une m thode encore plus simple rapide et efficace l API en ligne de commande L API en ligne de commande se pr sente sous la forme d un ensemble d ex cutables un par type de fonctionnalit offerte par l ensemble des produits Yoctopuce Ces ex cutables sont fournis pr compil s pour toutes les plateformes OS officiellement support s par Yoctopuce Bien entendu les sources de ces ex cutables sont aussi fournies 6 1 Installation T l chargez l API en ligne de commande II n y a pas de programme d installation lancer copiez simplement les ex cutables correspondant
258. u elle soient m moris es de mani re persistante il est n cessaire de demander au module de sauvegarder sa configuration courante dans sa m moire non volatile Pour cela il faut utiliser la m thode saveToFlash Inversement il est possible de forcer le module oublier ses r glages courants en utilisant la m thode revertFromFlash Ce petit exemple ci dessous vous permet changer le nom logique d un module include lt iostream gt include lt stdlib h gt include yocto api h using namespace std static void usage const char exe 52 www yoctopuce com 9 Utilisation du Yocto Servo en C cerni usager ee EE E ENEE SEET ink maiman anger conet char argv Se errmsg Setup the API to use local USB devices i yRegisterHub usb errmsg YAPT SUCCESS Cerin REG SES HUONE rror Ae omens CRAN I revus me enee 2 usage argv 0 YModule module yFindModule argv 1 use serial or logical name if module gt isOnline if arge gt 3 string newname argv 2 if yCheckLogicalName newname cerr lt lt Invalid name lt lt newname lt lt lt lt endl usage argv 0 module gt set_logicalName newname module gt saveToFlash cout lt lt Current name lt lt module gt get_logicalName lt lt endl else cout lt lt argv 1 lt lt not connected check identification and USB cable lt lt endl return
259. u module pr programm en usine function get_serialNumber function get_serialNumber function get_serialNumber string get_serialNumber NSString serialNumber function get_serialNumber string function get_serialNumber As String string get_serialNumber String get_serialNumber def get_serialNumber YModule target get_serialNumber Retourne YModule une cha ne de caract res repr sentant le num ro de s rie du module pr programm en usine En cas d erreur d clenche une exception ou retourne Y_SERTALNUMBER_INVALTID 168 www yoctopuce com 19 R f rence de l API de haut niveau module get_upTime YModule module upTime Retourne le numbre de millisecondes coul es depuis la mise sous tension du module function get_upTime function get_upTime function get_upTime s64 get_upTime s64 upTime function get_upTime int64 function get_upTime As Long long get_upTime long get_upTime def get_upTime YModule target get_upTime Retourne un entier repr sentant le numbre de millisecondes coul es depuis la mise sous tension du module En cas d erreur d clenche une exception ou retourne Y_UPTIME_INVALID www yoctopuce com 169 19 R f rence de l API de haut niveau module get_usbBandwidth module usbBandwidth Retourne le nombre d interface USB utilis par le module function get_usbBandwidth function ge
260. uce fabrique des hubs particuli rement petits pr cis ment destin s cet usage dont la taille peut tre r duite 20mm par 36mm et qui se montent en soudant directement les modules au hub via des connecteurs droits ou des c bles nappe Pour plus de d tail consulter la fiche produit du micro hub USB YoctoHub Ethernet et YoctoHub Wireless Vous pouvez ajouter une connectivit r seau votre Yocto Servo gr ce aux hubs YoctoHub Ethernet et YoctoHub Wireless Le premier offre une connectivit Ethernet le second offre une connectivit Wifi Chacun de ces hubs peut piloter jusqu trois modules Yoctopuce et se comporte exactement comme un ordinateur normal qui ferait tourner un VirtualHub Cable nappe mono brin Si vous d sirez souder le module Yocto Servo directement un micro hub USB pour viter l encombrement d un vrai cable USB utilisez de pr f rence du cable nappe tam mono brin c est le plus facile souder Dans tous les cas il vous faudra 4 fils espac s de 1 27mm www yoctopuce com 3 Introduction Bornier d alimentation externe Il est pr vu que vous puissiez souder directement le cable d alimentation externe sur le module N anmoins vous pouvez utiliser un bornier pour rendre le tout un peu plus d montable Utilisation d un bornier pour l alimentation externe Bo tier Votre Yocto Servo a t con u pour pouvoir tre install tel quel dans votre projet N anmoins Yoctopuce
261. ue votre projet va g rer Dans le doute vous pouvez aussi s lectionner tous les fichiers 1 http www microsoft com visualstudio en us products 2010 editions visual csharp express www yoctopuce com FR libraries php 3 Les sources de cette DLL sont disponibles dans l API C www yoctopuce com 71 12 Utilisation du Yocto Servo en C Vous avez alors le choix entre simplement ajouter ces fichiers votre projet ou les ajouter en tant que lien le bouton Ajouter est en fait un menu d roulant Dans le premier cas Visual Studio va copier les fichiers choisis dans votre projet dans le second Visual Studio va simplement garder un lien sur les fichiers originaux Il est recommand d utiliser des liens une ventuelle mise jour de la librairie sera ainsi beaucoup plus facile Ensuite ajoutez de la m me mani re la dll yapi d11 qui se trouve dans le r pertoire Sources d11 Puis depuis la fen tre Explorateur de solutions effectuez un clic droit sur la DLL choisissez Propri t et dans le panneau Propri t s mettez l option Copier dans le r pertoire de sortie toujours copier Vous tes maintenant pr t utiliser vos modules Yoctopuce depuis votre environnement Visual Studio Afin de les garder simples tous les exemples fournis dans cette documentation sont des applications consoles Il va de soit que que les fonctionnement des librairies est strictement identiques si vous les int grez dans une application dot e d une
262. uffer pointe sur un tableau d entiers 32 bits qui contiendra les handles retourn s Maxsize est la taille en bytes du buffer neededsize contiendra au retour la taille n cessaire pour stocker tous les handles Cela permet d en d duire le nombre de module connect s ou si le buffer pass en entr e est trop petit Le param tre errmsg devra pointer sur un buffer de 255 caract res pour r cup rer un ventuel message d erreur Ce pointeur peut aussi tre a null Cette fonction retourne un entier n gatif en cas d erreur ou z ro dans le cas contraire La fonction yapiGetDevicelnfo permet de r cup rer les informations relatives un module partir de son handle devdesc est un entier 32bit qui repr sente le module et qui a t obtenu gr ce yapiGetAllDevices infos pointe sur une structure de donn es dans laquelle sera stock le r sultat Le format de cette structure est le suivant Nom Type bytes Description vendorid int 4 ID USB de Yoctopuce deviceid int 4 ID USB du module devrelease int 4 Version du module nbinbterfaces int 4 Nombre d interfaces USB utilis e par le module manufacturer char 20 Yoctopuce null termin productname char 28 Mod le null termin serial char 20 Num ro de s rie null termin logicalname char 20 Nom logique null termin firmware char 22 Version du firmware null termin beacon byte 1 Etat de la balise de localisation 0 1 Le param tre errmsg devra pointer sur un
263. ule get_errorType YModule module errorType Retourne le code d erreur correspondant la derni re erreur survenue lors de l utilisation de l objet module function get_errorType function get_errorType function get_errorType YRETCODE get_errorType function get_errorType YRETCODE function get_errorType As YRETCODE YRETCODE get_errorType int get_errorType def get_errorType Cette m thode est principalement utile lorsque la librairie Yoctopuce est utilis e en d sactivant la gestion des exceptions Retourne un nombre correspondant au code de la derni re erreur qui s est produit lors de l utilisation du module 156 www yoctopuce com 19 R f rence de l API de haut niveau module gt get_firmwareRelease YModule module gt firmwareRelease Retourne la version du logiciel embarqu du module function get_firmwareRelease function get_firmwareRelease function get_firmwareRelease string get_firmwareRelease NSString firmwareRelease function get_firmwareRelease string function get_firmwareRelease As String string get_firmwareRelease String get_firmwareRelease def get_firmwareRelease YModule target get_firmwareRelease Retourne une cha ne de caract res repr sentant la version du logiciel embarqu du module En cas d erreur d clenche une exception ou retourne Y_FIRMWARERELEASE_INVALID www yoctopuce com 157 19 R f
264. ule isOnline pour tester si le module est utilisable un moment donn En cas d ambigu t lorsqu on fait une recherche par nom logique aucune erreur ne sera notifi e la premi re instance trouv e sera renvoy e La recherche se fait d abord par nom mat riel puis par nom logique Param tres func une cha ne de caract res contenant soit le num ro de s rie soit le nom logique du module d sir Retourne un objet de classe YModule qui permet ensuite de contr ler le module ou d obtenir de plus amples informations sur le module 146 www yoctopuce com 19 R f rence de l API de haut niveau YModule FirstModule yFirstModule Commence l num ration des modules accessibles par la librairie function yFirstModule function FirstModule function yFirstModule YModule yFirstModule YModule yFirstModule pas function yFirstModule TYModule function yFirstModule As YModule YModule FirstModule YModule FirstModule def FirstModule YModule Utiliser la fonction YModule nextModule pour it rer sur les autres modules Retourne un pointeur sur un objet YModule correspondant au premier module accessible en ligne ou null si aucun module n a t trouv www yoctopuce com 147 19 R f rence de l API de haut niveau module describe Retourne un court texte d crivant le module _is function describe node js function describe
265. ules avec le m me nom logique et que le logiciel de pilotage essaye d acc der l un de ces module l aide de son nom logique A leur sortie d usine les modules n ont pas de nom logique assign c est vous de le d finir 2 2 Les l ments sp cifiques Les cinq canaux Le module Yocto Servo dispose de cinq sorties capable de piloter chacune un servo Ces sorties peuvent tre aliment es soit par le bus UBS soit par une alimentation externe 1 court court court long long long court court court 2 support yoctopuce com 6 www yoctopuce com 2 Pr sentation Il est possible de brancher jusqu cinq servos Le module est essentiellement pr vu pour faire fonctionner des servos moteurs de mod lisme mais il peut parfaitement faire fonctioner d autre dispositifs en fait si pouvez faire fonctionner un dispositif en le branchant sur un r cepteur de mod lisme vous pouvez aussi le faire piloter avec le Yocto Servo cela inclut les variateurs de vitesse brushless ou non Un port USB ne pouvant officiellement pas fournir plus de 500mA et de toutes mani re pas plus de 2 amp res vous ne pourrez faire fonctionnent que des tout petits servo en n utilisant que le port USB C est pourquoi le module Yocto Servo peut tre alimenter avec une alimentation externe Le port d alimentation externe Vous pouvez brancher une alimentation externe sur votre module cette alimentation sert alimenter les servos La tension appliqu e
266. unt Retourne le nombre de fonctions sur le module En cas d erreur d clenche une exception ou retourne un code d erreur n gatif 150 www yoctopuce com 19 R f rence de l API de haut niveau module functionid YModule Retourne l identifiant mat riel de la ni me fonction du module function functionid functionindex function functionld functionindex function functionld functionindex string functionld int functionindex NSString functionld int functionindex function functionld functionindex integer string function functionld ByVal functionindex As Integer As String string functionld int functionindex def functionld functionindex Param tres functionindex l index de la fonction pour laquelle l information est d sir e en commen ant 0 pour la premi re fonction Retourne une cha ne de caract res correspondant l identifiant mat riel unique de la fonction d sir e En cas d erreur d clenche une exception ou retourne un cha ne vide www yoctopuce com 151 19 R f rence de l API de haut niveau module functionName YModule Retourne le nom logique de la ni me fonction du module function functionName functionindex function functionName functionindex function functionName functionindex string functionName int functionindex NSString functionName int functionindex function functionName functionindex integer st
267. ur Y CURRENTVALUE INVALID etc Dans tous les cas la valeur retourn e sera du 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 YAPI SUCCESS si tout va bien et un code d erreur diff rent en cas d chec T 68 www yoctopuce com 11 Utilisation du Yocto Servo en VisualBasic NET 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 et errMessage Ce sont les m me informations qui auraient t associ es l exception si elles avaient t actives www yoctopuce com 69 70 www yoctopuce com 12 Utilisation du Yocto Servo en C C prononcez C Sharp est un langage orient objet promu par Microsoft qui n est pas sans rappeller Java Tout comme Visual Basic et Delphi il permet de cr er des applications Windows relativement facilement Tous les exemples et les mod les de projet sont test s avec Microsoft C 2010 Express disponible gratuitement sur le site de Microsoft 1 12 1 Installation T l chargez la librairie Yoctopuce pour Visual C depuis le site
268. urn 0 9 3 Gestion des erreurs Lorsque vous impl mentez un programme qui doit interagir avec des modules USB vous ne pouvez pas faire abstraction de la gestion des erreurs Il y aura forc ment une occasion o un utilisateur aura d branch le p riph rique soit avant de lancer le programme soit m me en pleine op ration La librairie Yoctopuce est pr vue pour vous aider supporter ce genre de comportements mais votre code doit n anmoins tre fait pour se comporter au mieux pour interpr ter les erreurs signal es par la librairie La mani re la plus simple de contourner le probl me est celle que nous avons employ pour les petits exemples pr c dents de ce chapitre avant d acc der un module on v rifie qu il est en ligne avec la m thode isOnline et on suppose ensuite qu il va y rester pendant la fraction de seconde n cessaire ex cuter les lignes de code suivantes Ce n est pas parfait mais a peut suffire dans certains cas II faut toutefois tre conscient qu on ne peut pas totalement exclure une erreur se produisant apr s le isOnline qui pourrait faire planter le programme La seule mani re de l viter est d impl menter une des deux techniques de gestion des erreurs d crites ci dessous 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 s
269. us rien ne garantit que la sauvegarde des r glages se passera correctement Cette limite li e la technologie employ e par le micro processeur du module se situe aux alentour de 100000 60 www yoctopuce com 10 Utilisation du Yocto Servo en Objective C cycles Pour r sumer vous ne pouvez employer la fonction saveToFlash que 100000 fois au cours de la vie du module Veillez donc ne pas appeler cette fonction depuis l int rieur d une boucle Enumeration des modules Obtenir la liste des modules connect s se fait a l aide de la fonction yFirstModule qui renvoie le premier module trouv il suffit ensuite d appeler la fonction nextModule de cet objet pour trouver les modules suivants et ce tant que la r ponse n est pas un NULL Ci dessous un petit exemple listant les module connect s import lt Foundation Foundation h gt import yocto api h int Main NT arge const cher sec NSError error autoreleasepool Setup the API to use local USB devices if yRegisterHub usb amp error VAPT SUCCESS NSLog RegisterHub error n error localizedDescription return 1 NSLog Device list n YModule module yFirstModule while module nil NSLog 3 3 module serialNumber module productName module module nextModule return 0 10 3 Gestion des erreurs Lorsque vous impl mentez un programme qui doit interagir avec des modules USB vous ne pouvez pas f
270. w yoctopuce com 107 108 www yoctopuce com 17 Programmation avanc e Les chapitres pr c dents vous ont pr sent dans chaque language disponible les fonctions de programmation de base utilisables avec votre module Yocto Servo Ce chapitre pr sente de fa on plus g n rale une utilisation plus avanc e de votre module Les exemples sont donn s dans le language le plus populaire aupr s des clients de Yoctopuce savoir C N anmoins vous trouverez dans les librairies de programmation pour chaque language des exemples complets illustrant les concepts pr sent s ici Afin de rester le plus concis possible les exemples donn s dans ce chapitre ne font aucune gestion d erreur Ne les copiez pas tels quels dans une application de production 17 1 Programmation par v nements Les m thodes de gestion des modules Yoctopuce qui vous ont t pr sent es dans les chapitres pr c dents sont des fonctions de polling qui consistent demander en permanence l API si quelque chose a chang Facile appr hender cette technique de programmation est n est pas la plus efficace ni la plus r active C est pourquoi l API de programmation Yoctopuce propose aussi un mod le de programmation par v nements Cette technique consiste demander l API de signaler elle m me les changements importants d s qu ils sont d tect s A chaque fois qu un param tre cl change l API appelle une fonction de callback que vous avez pr d finie
271. web de Yoctopuce Il n y a pas de programme d installation copiez simplement de contenu du fichier zip dans le r pertoire de votre choix Vous avez besoin essentiellement du contenu du r pertoire Sources Les autres r pertoires contiennent la documentation et quelques programmes d exemple Les projets d exemple sont des projets Visual C 2010 si vous utilisez une version ant rieure il est possible que vous ayez reconstruire la structure de ces projets 12 2 Utilisation l API yoctopuce dans un projet Visual C La librairie Yoctopuce pour Visual C NET se pr sente sous la forme d une DLL et de fichiers sources en Visual CH La DLL n est pas une DLL NET mais une DLL classique crite en C qui g re les communications bas niveau avec les modules Les fichiers sources en Visual C g rent la partie haut niveau de l API Vous avez donc besoin de cette DLL et des fichiers cs du r pertoire Sources pour cr er un projet g rant des modules Yoctopuce Configuration d un projet Visual C Les indications ci dessous sont fournies pour Visual Studio express 2010 mais la proc dure est semblable pour les autres versions Commencez par cr er votre projet puis depuis le panneau Explorateur de solutions effectuez un clic droit sur votre projet et choisissez Ajouter puis El ment existant Une fen tre de s lection de fichiers appara t s lectionnez le fichier yocto api cs et les fichiers correspondant aux fonctions des modules Yoctopuce q
272. widget AdapterView OnItemSelectedListener import android widget ArrayAdapter import android widget SeekBar import android widget Spinner import com yoctopuce YoctoAPI YAPI import com yoctopuce YoctoAPI YAPI Exception import com yoctopuce YoctoAPI YServo public class GettingStarted Yocto Servo extends Activity implements private YServo servo null private ArrayAdapter lt String gt aa Override public void onCreate Bundle savedInstanceState super onCreate savedInstanceState setContentView R layout gettingstarted yocto servo Spinner my spin Spinner findViewById R id spinner1 EE EE EE bere aa new ArrayAdapter lt String gt this android R layout simple_ OnltemSelectedListener spinner item aa setDropDownViewResource android R layout simple spinner dropdown item my spin setAdapter aa Override protected void onStart s per Onercnex 0e aa clear Ery i YAPI EnableUSBHost this YAPI RegisterHub usb YServo s YServo FirstServo while s null String hwid s get_hardwarelId aa add hwid S s nextServo catch YAPT Exception e prinestacklracel aa notifyDataSetChanged Override protected void onStop super onStop YAPI FreeAPI Override public void onItemSelected AdapterView lt gt parent View view DOE Aere long id www yoctopuce com 101 16 Utilisation du Yocto Servo avec An
273. xemple ci dessous vous permet changer le nom logique d un module using System using oystem Collections Generic using System Ling using System Text namespace ConsoleApplicationl class Program static void usage string execname System AppDomain CurrentDomain FriendlyName Console WriteLine Usage Console WriteLine usage demo lt serial or logical name gt lt new logical name gt System Threading Thread Sleep 2500 Environment Exit 0 static void Main string args YModule m String errmsg string newname if args Length 2 usage if YAPI RegisterHub usb ref errmsg YAPI SUCCESS Console WriteLine RegisterHub error errmsg Environment Exit 0 m YModule FindModule args 0 use serial or logical name if m isOnline newname args 1 if YAPI CheckLogicalName newname Console WriteLine Invalid name newname Environment Exit 0 m set_logicalName newname m saveToFlash do not forget this Console Were Module serra image taser tcl Number i i Console Writeline name m get_logicalName else www yoctopuce com 75 12 Utilisation du Yocto Servo en C Console Write not connected check identification and USB cable Attention le nombre de cycles d criture de la m moire non volatile du module est limit Pass cette limite plus rien ne gar
274. yDisableExceptions void yDisableExceptions void yDisableExceptions procedure yDisableExceptions procedure yDisableExceptions void DisableExceptions def DisableExceptions YAPI Lorsque les exceptions sont d sactiv es chaque fonction retourne une valeur d erreur sp cifique selon son type document e dans ce manuel de r f rence www yoctopuce com 121 19 R f rence de l API de haut niveau YAPI EnableExceptions YAPI yEnableExceptions R active l utilisation d exceptions pour la gestion des erreurs function yEnableExceptions node js function EnableExceptions function yEnableExceptions void yEnableExceptions void yEnableExceptions procedure yEnableExceptions procedure yEnableExceptions cs void EnableExceptions def EnableExceptions Attention lorsque les exceptions sont activ es tout appel a une fonction de la librairie qui choue d clenche une exception Dans le cas o celle ci n est pas intercept e correctement par le code appelant soit le debugger se lance soit le programme de l utilisateur est imm diatement stopp crash 122 www yoctopuce com 19 R f rence de l API de haut niveau YAPI EnableUSBHost YAPI yEnableUSBHost Cette fonction est utilis e uniquement sous Android synchronized static void EnableUSBHost Object osContext Avant d appeler yRegisterHub usb il faut activer le port USB host du systeme Cette fo
275. z 0 9 et advertisedValue Courte cha ne de caract res r sumant l tat actuel du servo et qui sera publi e automatiquement jusqu au hub parent Pour un servo la valeur publi e est sa position actuelle un nombre entre 1000 et 1000 compris position Position actuelle du servo ramen e par convention dans l intervalle 1000 et 1000 compris Lorsque la valeur 0 correspond la position m diane du servo range Plage d utilisation du servo La valeur 100 correspond un signal de commande standard variant de 1 ms 2 ms Pour les servos supportent une plage double de 0 5 ms 2 5 ms vous pouvez www yoctopuce com 21 5 Programmation concepts g n raux utiliser une plage allant jusqu 200 Attention l utilisation d une plage sup rieure aux caract ristiques du servo risque fortement d endommager le servo neutral Dur e en microsecondes de l impulsion correspondant au neutre du servo La valeur standard est de 1500 us mais certains servos utilisent une autre valeur afin d exploiter un plage plus grande Attention l utilisation d une valeur incorrecte risque fortement d endommager le servo move Permet de faire bouger le servo d une position l autre en un temps pr cis La valeur est un agr gat comprenant la position cible un entier et une dur e en millisecondes 5 6 Quelle interface Native DLL ou Service Il y existe plusieurs m thodes pour contr ler un module Yoctopuce depui
Download Pdf Manuals
Related Search
Related Contents
#48 - Intermediate Twig: Logic, Macros & More with Andrew Welch MAW-6W 取扱説明書 MAW-5W Furuno FE-400 User's Manual VO8 EXTRA - Le Vrai Professionnel Digital Light Meter VAssert Programming Guide Fusions comment federer une equipe mixte Palm Centro (AT&T) Quick Start Guide Copyright © All rights reserved.
Failed to retrieve file