• No results found

3.4 Implementation Requirement

3.4.2 Mobile Platform

En este apartado se mostrarán en orden cronológico los elementos y las etapas de ejecución del SPP-CNC de manera distribuida.

Figura 6.6 Interfaz definida para la aplicación SPP-CNC.

En la figura 6.6 se observa la definición de la interfaz ICE necesaria para permitir la transformación de la aplicación SPP-CNC stand-alone a una aplicación distribuida. Siguiendo las reglas de la herramienta Slice, se define un módulo el cual contiene tipos de datos e interfaces. Los tipos de datos pueden ser los soportados de manera nativa por la herramienta ICE o definidos por el usuario. La cantidad de interfaces puede ser variable. En este caso se observa que el módulo se denomina “Parametros”. Este nombre de módulo sirve para determinar el “naming space” (forma de cualificar los métodos, objetos y variables en el lenguaje de programación C++), que ha de utilizarse al codificar los programas. Existe una variable llamada “valores” que es de tipo “sequence<string>”. Este tipo de datos en particular equivale en el lenguaje C++ a un vector de cadenas. En este caso la interfaz se denominó “Selector”. Este nombre de interfaz servirá para identificar a la clase que contiene las funcionalidades de proxy (cliente) y de skeleton (servidor). Se puede apreciar que hay dos métodos definidos: obtenerValIniciales() y obtenerValFinales(string opc, string mat, string dia, string die). Ambas tienen como tipo de retorno “valores”. La primera sirve para que el cliente solicite al servidor los valores que servirán para llenar los controles de selección del usuario (marcas, operaciones, materiales). La información de

retorno se transporta en un vector, el cual es manipulado para extraer los datos y ubicarlos en el control de selección correspondiente. Así, tanto la información de marcas, operaciones y materiales viajan desde el servidor hacia el cliente en un mismo vector. El segundo método es en el que se llevan a cabo los cálculos de las velocidades requeridas. Al invocarse se pasan como parámetros el tipo de operación (opc), el material (mat), el diámetro (dia) y el número de dientes (die) de la herramienta a utilizar. Estos datos de entrada se utilizan para realizar consultas a la base de datos y obtener las velocidades de fábrica (corte - vc y avance - fz) que a su vez servirán para calcular la velocidad del husillo (n) y el avance de mesa (vf). Los valores de retorno también se transportan en un sólo vector, el cual se procesa para desplegar los valores en los sitios indicados.

La figura 6.7 muestra el conjunto de archivos que dan vida al componente servidor de la aplicación SPP-CNC. El directorio que los contiene es /home/Prototipos_tesis/Simples_Servicios/tooling/Servidor. Aquí pueden observarse los

archivos Programer.ice – interfaz (ver figura 6.6), Programer.h y Programer.cpp –

generados al compilar con Slice el Programer.ice, Server.cpp –contiene la implementación de la funcionalidad de los métodos definidos en la interfaz, forma_compilar.txt –contiene los comandos y parámetros necesarios para compilar con éxito el archivo Server.cpp y generar el archivo ejecutable servidor_parametros (ver la figura 6.7). Este último es el binario que se ejecuta y responde a las demandas de los clientes. Básicamente cuando el cliente invoque al método obtenerValIniciales, este binario que implementa al servidor, manda al servidor de base de datos una consulta para obtener las marcas, operaciones y materiales, al recibir los datos los mete a un vector y envía este último al cliente que lo solicita. Cuando el cliente ejecuta el método obtenerValFinales(string opc, string mat, string dia, string die) el trabajo del binario consiste en hacer de nuevo otra consulta al servidor, obtener ciertos datos de corte, aplicar fórmulas para calcular otras velocidades, meter los valores requeridos a un vector y regresarlo al cliente.

Básicamente el componente servidor no ocupa interfaz gráfica de usuario, por lo que al ejecutarse pareciera que no está sucediendo nada en la consola, pero lo que realmente

sucede es que este componente se pone a escuchar por un puerto específico las posibles peticiones que vengan de los clientes.

Con respecto a los puertos utilizados, si alguna aplicación que se encuentre en memoria está bloqueando el puerto que se especifica para el servidor, causará que no se pueda ejecutar el servidor. Este evento se hace evidente porque en la consola se puede observar un mensaje descriptivo de que no se puede ejecutar la aplicación porque el puerto no está disponible.

Figura 6.7 Ejecución de la parte servidor de la SPP-CNC.

La figura 6.8 muestra la forma de ejecutar el cliente de la SPP-CNC. Pueden observarse dos consolas superpuestas. En la de atrás se observa que el servidor se está ejecutando y en espera de conexiones de clientes, en la de enfrente se muestra la forma en la que se manda a ejecutar el cliente (no cambia en relación a la forma de ejecución en modo stand-alone).

Figura 6.8 Ejecución del componente cliente de la SPP-CNC.

La figura 6.9 muestra la ventana que se le presenta al usuario de la aplicación cliente para que introduzca la dirección Ip donde se encuentra instalado el servidor que atenderá a sus peticiones. La cadena introducida aquí será utilizada para crear los objetos proxy del lado del cliente que permitirán hacer las invocaciones remotas. Si se presiona el botón cancelar se cierra la aplicación cliente. Si por el contrario, se introduce la Ip y se presiona “ok” se despliega una nueva ventana (ver figura 6.10), la cual tiene los mismos elementos que la de la aplicación stand-alone, por lo que visualmente la apariencia y el comportamiento son los mismos, sin embargo los valores iniciales son obtenidos de manera remota y cada vez que oprime el botón calcular se envían peticiones al servidor para que procese los datos de entrada y regrese al cliente la información que requiere. Lo cual puede observarse en la figura 6.11.

Figura 6.9 Pantalla del cliente SPP-CNC que pide la Ip del Servidor.

Figura 6.11 Pantalla del cliente SPP-CNC para ver los resultados.

6.2 Aplicación compilador