Difference between revisions of "Tutorial yarp devices"

From Asociación de Robótica UC3M
Jump to navigation Jump to search
Line 8: Line 8:
  
 
== YARP device desde un programa ==
 
== YARP device desde un programa ==
 +
 +
int main(int argc, char *argv[]) {
 +
 +
    yarp::os::Network yarp;
 +
    if ( ! yarp::os::Network::checkNetwork() )
 +
    {
 +
        printf("Please start a yarp name server first\n");
 +
        return(1);
 +
    }
 +
    yarp::os::Property options;
 +
    options.put("device","nombre_dispositivo");
 +
    //-- Se pueden pasar más parámetros al YARP device en el formato:
 +
    //options.put("mas_parametros","valor_de_ese_parametro");
 +
    //options.put("mas_parametros","valor_de_ese_parametro");
 +
    //-- ...
 +
    yarp::dev::PolyDriver dd(options);
 +
    if( ! dd.isValid() )
 +
    {
 +
        printf("Device not available.\n");
 +
        dd.close();
 +
        yarp::os::Network::fini();
 +
        return 1;
 +
    }
 +
 +
    while(1);  //-- Esta no es la mejor práctica, la idea es no cerrar el programa!
 +
 +
    return 0;
 +
}

Revision as of 12:56, 11 March 2016

Un YARP device es por norma general una clase C++ que hereda de yarp::dev::DeviceDriver y que además tiene un poco de magia CMake. Las versiones actuales de YARP compilan esta clase en una librería dinámica que se puede cargar de dos maneras:

YARP device desde yarpdev

Para ver los YARP devices disponibles, tecleamos:

yarpdev --list

Para lanzar un YARP device, tecleamos:

yarpdev --device nombre_dispositivo

YARP device desde un programa

int main(int argc, char *argv[]) {

   yarp::os::Network yarp;
   if ( ! yarp::os::Network::checkNetwork() )
   {
       printf("Please start a yarp name server first\n");
       return(1);
   }
   yarp::os::Property options;
   options.put("device","nombre_dispositivo");
   //-- Se pueden pasar más parámetros al YARP device en el formato:
   //options.put("mas_parametros","valor_de_ese_parametro");
   //options.put("mas_parametros","valor_de_ese_parametro");
   //-- ...
   yarp::dev::PolyDriver dd(options);
   if( ! dd.isValid() )
   {
       printf("Device not available.\n");
       dd.close();
       yarp::os::Network::fini();
       return 1;
   }

   while(1);  //-- Esta no es la mejor práctica, la idea es no cerrar el programa!

   return 0;
}