Sesión 4 : Creación de una Aplicación Básicas en ACS - ASTROINGENIERIA/ASTROUFRO GitHub Wiki

Relator : Jorge Avarias

Fecha : 22.06.2017

Participantes

Recursos Digitales:

  • Presentación (PPT) : ...link

Resumen de Temas Tratados

Creacion de una Nueva Aplicacion

  1. Crear MODROOT_WS con el commando getTemplateForDirectory MODROOT_WS <directorio_de_la nueva_componente>

  2. Crear IDL Characteristic Component

    • Con al menos una BACI property (var1, var2, ...)

    • Hay que editar el src/Makefile para incluir el IDL

      # IDL Files and flags

      IDL_FILES = test_app // nombre de la idl sin extension

    • Despues de definir esto se podria probar el makefile para ver si se generan los stubs a partir de la definicion de la IDL

    • Luego se puede continuar con la definicion del make file agregando las implementaciones de nuestro componente para que sean compiladas. Es decir aqui podemos ejecutar el paso (3) y luego volver.

      # Libraries (public and local)

      LIBRARIES = test_app

      test_app_OBJECTS = test_app_impl

      test_app_LIBS = test_appStubs baciStubs ACE TAO TAO_PortableServer TAO_CosProperty maciErrType baselogging ACSErrTypeCommon acscommonStubs acserrStubs acserr logging logging maci maciStubs loki ACSErrTypeCORBA acscomponent baci loki

    • Luego se puede probar el makefile nuevamente y correguir los eventuales problemas de la nueva implementacion.

  3. Implementacion del Characteristic Component (C++)

    • Se implementára en principio un simuladore del sensor a traves del DevIO.

    • La implementación debe ser hecha en el directorio include (ej. include/test_app_impl.h) y el cpp esta en el directorio src (src/test_app_impl.cpp).

    • En test_app_impl.h: Es donde se definen la clases que implementa el componente En la clase test_app_imp se definen: public:

      • El constructor, destructor y todos los metodos que sean necesarios
      • Dado que es un Characteritic Component, podemos definir un par de BACI proporties (var1, var2, etc.)
      • Los metodos initialize(), execute(), cleanUp() y aboutToAbort() deben ser definidos tambien.

      private:

      • tambien se definen las BACI properties, POR QUE? si ya estan definidas como publicas?
      • Finalmente se especifica la clase DevIO con sus metdos por defecto.
    • En test_app.cpp: Es donde se implementan los métdos del componente.

      • En el ejemplo, se implementa el metodo initialize(), para que ejecute el metodo on() y para setea los dos variables privadas (var1_m y var2_m) asociadas a las BACI properties.

      • Tambien hay que implementar (con texto standard) los metodos de las variables definidas como BACI properties: ACS::ROdouble_ptr test_app_impl::var1()

        ACS::ROdouble_ptr test_app_impl::var2()

      • test_app_devio: Es la clase que maneja la interaccion con el sensor. En este caso se implementa el metodo read() que hace la consulta al sensor en cuestion.

    • Finalmente es importante definir la linea MACI_DLL_SUPPORT_FUNCTIONS(test_app_impl) QUE HACE?????

  4. Definir Schema (.xsd)

  • Se crea el archivo config/CDB/schemas/nombre_archivo.xsd, el cual puede ser copiado de otro desarrollo similar.
  • Aqui se definen las BACI properties
  • Este archivo (.xsd) sólo es necesario si se esta trabajando en un componentes con BACI properties es decir en un Characteristic Component.
  • Se crea el archivo ...
  1. Definir CDB
    • cdbChecker
  2. Arancar ACS y probar

Conclusiones

bbbb bbbb bbbb