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
-
Crear MODROOT_WS con el commando
getTemplateForDirectory MODROOT_WS <directorio_de_la nueva_componente>
-
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.
-
-
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()
yaboutToAbort()
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 metodoon()
y para setea los dos variables privadas (var1_m
yvar2_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?????
-
-
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 ...
- Definir CDB
- cdbChecker
- Arancar ACS y probar
Conclusiones
bbbb bbbb bbbb