[Jde-dev] Problemas con Implementación de JointsArray

Juan Gonzalez juan en iearobotics.com
Vie Mar 19 09:42:40 CET 2010


Hola,

  Bueno, leyendo el manual, he conseguido solucionar mis problemas de
compilación. Ya he conseguido hacer el mapeo entre las articulaciones
del servidor (JointI) y asignarlas a JointSeq. El exorcismo en cuestión
es este:

    JointIPtr j1 = new JointI(pcontroller);
    JointPrx proxy = JointPrx::uncheckedCast(adapter->addWithUUID(j1));
    _JointSeq.push_back(proxy);

Ahora compila, pero me sale un bonito 

/usr/include/IceUtil/Handle.h:46: IceUtil::NullHandleException

en tiempo de ejecución al acceder desde el cliente a las articulaciones.

Se me ha debido pasar algo por alto.... seguiré probando. Pero al menos,
conseguir que me compilase ha sido todo un logro :-)

os seguiré informando

Saludos, Juan

El vie, 19-03-2010 a las 09:35 +0100, Juan Gonzalez escribió:
> Hola David,
> 
> Gracias por la info. Creo que voy a tener que dedicar un más poco de
> tiempo a la lectura del manual para familiarizarme con toda la
> terminología de ICE.
> 
>   Me emocioné implementando la interfaz de Joint y pensé que JointsArray
> me llevaría menos tiempo. Me voy a documentar y luego volveré a la
> carga ;-)
> 
> Saludos, Juan
> 
> El jue, 18-03-2010 a las 13:43 -0400, David Lobato escribió:
> > Mirate el ejemplo del manual del Filesystem, declaran una secuencia
> > con la misma pinta.
> > EL asunto es que tienes que crear las instancias de los Joints,
> > añadirlas al object adapter y una vez echado a andar preguntar al
> > object adapter por los proxys de cada una de las instancias.
> > 
> > 
> > El tema concreto es servant locator.
> > 
> > 
> > David.
> > 
> > 2010/3/18 Juan Gonzalez <juan en iearobotics.com>
> >         Hola,
> >         
> >          Todavía estoy muy verde con el ICE y tampoco soy un
> >         programador en C++
> >         experimentado, por lo que estoy encontrando problemas para
> >         implementar
> >         el servidor de jointsArray. Necesito algo de luz ;-)
> >         
> >          De momento, estoy trabajando con esta interfaz:
> >         
> >         module jderobot {
> >         
> >            interface Joint {
> >                idempotent  void setPos(short pos);
> >                idempotent short getPos();
> >            };
> >         
> >            sequence<Joint*> JointSeq;
> >         
> >            interface JointsArray{
> >                JointSeq getJoints();
> >            };
> >         
> >         };
> >         
> >         La Interfaz "Joint" la tengo implementada y funciona bien. Mis
> >         problemas
> >         aparecen cuando intento implementar la función getJoints() de
> >         la
> >         interfaz "JointsArray". No sé cómo crear los elementos de
> >         JointSeq.
> >         
> >         Según he leido en el manual de ice, el mapeo de esto:
> >         
> >            sequence<Joint*> JointSeq
> >         
> >         a c++ debería ser:
> >         
> >            vector<Joint*> JointSeq
> >         
> >         Desde aquí tendría fácil acceso a Joint en el servidor. Pero
> >         como Joint
> >         es a su vez una interfaz, el mapeo que hace es:
> >         
> >         typedef ::std::vector< ::jderobot::JointPrx> JointSeq;
> >         
> >         Y ahí ya estoy perdido. Ni idea de cómo puedo acceder a
> >         Joint :-(
> >         
> >         ¿Alguien me arroja luz?
> >         
> >         Mientras tanto voy a seguir leyendo el manual de ICE
> >         
> >         Saludos, Juan
> >         
> >         
> >         
> >         --
> >         Blog: www.iearobotics.com/blog
> >         Web: www.iearobotics.com/juan
> >         
> >         _______________________________________________
> >         Jde-developers mailing list
> >         Jde-developers en gsyc.es
> >         http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
> > 
> > 
-- 
Blog: www.iearobotics.com/blog
Web: www.iearobotics.com/juan



More information about the Jde-developers mailing list