Ejemplo Aplicación con Graphics ArchestrA

En las primeras practicas de ArchestrA ya vimos un pequeño ejemplo de la creación de una Galaxy y sus componentes, practicas 1,2,3 hoy basandonos en otro ejemplo vamos a implementar y ver otras caracteristicas.

A partir de esté vamos a ir implementado poco a poco mas caracteristicas a nuestra aplicación. Nuestra intención es adquirir y monitorear una serie de atributos/datos de una estación, para este ejemplo vamos a suponer que nuestra estación es un Molino eólico y estan repartidos por todo el territorio nacional y queremos controlar su funcionamiento, lo primero que hacemos es crear un Objeto del tipo $UserDefined con todos los atributos equivalentes a todas las estaciones, vamos a suponer los siguientes

Y vamos a suponer que tiene los siguientes UDAs (User Defined Atributes) para cada Estación, si usamos Extensións, podemos asignar a estos UDAs un origen de Datos de nuestra Galaxy o bien podemos hacer cambios en estos atributos por medio de los Scripts, ese tema lo veremos mas adelante.

Dentro de los Graphics de nuestro Objeto Estación, de he asignado un simbolo, algo parecido a un molino eólico, que vamos a ver que le hemos implementado.

Si editamos nuestro simbolo, a parte de una pequeña animación de rotación que le he implementado, vamos a ver la que nos interesa para este ejemplo, queremos que cuando le demos un click de ratón, a la ubicación de nuestro molino, nos muestre un nuevo simbolo y nos de información de dicha estación.

Con lo cual, salvo la animación de rotación, la animación que nos interesa es la de Show Symbol como se puede observar en la imagen, y el simbolo que nos mostrará será DatosEstación.

Definimos las caracteristicas del simbolo, si nos interesa que muestre el titulo y tenga botón de cerrar y la posición del mismo

Ahora a su vez, vamos a ver el Simbolo DatosEstación para comprobar que tenemos que programar en el. Como ya señalo en la imagen, no posee ninguna Custom Properties, tampoco tiene ningún script configurado.

Como se observa, el simbolo esta creado a partir de Text Para hacer de Labels y TextBox para mostrar información. Cada TextBox tiene configurada la animación Value Display

Y aquí viene la parte interesante de esta practica, ya hemos visto los atributos que tiene una estación pues dependiendo de si es del tipo String o Analog, eso será lo que variará en cada TextBox ,por lo demas la Expression or Reference que vamos a usar es Me.NombreAtributo , para Nombre será Me.Nombre, la función del Me es como en visual Basic, hace referencia asi mismo, de la misma forma configuramos todos los TextBoxs

Una vez que ya hemos acabado de configurar nuestro Objeto Estacion, cada vez que lo instanciamos va a heredar todos los atributos que hemos configurado, cualquier cambio que hagamos en cualquier momento en $Estación será heredado y actualizado en todos sus hijos (Instancias).

A medida que vamos instanciado su nombre es único y va correlativo, aunque podemos cambiarlo si es nuestra intención.

Como las instancias que acabamos de crear no tienen ningúna configuración, pues ahora una a una vamos configurando todos los atributos, vamos a ver un ejemplo con un solo atributo y de la misma forma habria que definirlos todos ellos y de todas las instancias, una vez realizado esto, ya podemos asignarlas a nuestra Area.

Lo que tendriamos que hacer en cada uno de los atributos es asignar el I/O correspondiente, suponemos que los datos vienen dados por OPCClient, pues le asignamos el suyo a cada uno.

De la misma forma le vamos a dar valores a los UDA, a cada uno de ellos le asignamos su valor correspondiente. Esto lo hariamos con cada una de las instancias que tengamos.

Para el ejemplo, he creado tres instancias de $Estación, y ahora en la aplicacion de intouch vamos a insertar sus simbolos correspondiente, de cada una de las estaciones insertamos su simbolo y lo ubicamos donde corresponda.

Por último solo nos falta probar su funcionamiento, y para verlo con mas detalle aqui esta el siguiente video demostrativo. Esta practica se la dedico a Esteban Valles.

25 de Agosto del 2013