En la figura 3.9 se muestra el método principal “main” del programa del servicio
controlador de la tarjeta controladora, este método pertenece a la clase definida
como ControladorGPIB.java.
70
Inicializar variables generales
Se crea un objeto que
atenderá las
peticiones de los
usuarios
Main
Crear un objeto tipo servidorGPIB
“servidor”
Crear e inicializar un objeto
tipo “TektronixTDS640A”
Se crea un objeto con algunas
funcionalidades y
caracteristicas del osciloscopio
Método del objeto servidorGPIB,
levanta al thread „ThreadServidor‟ que
atiende las peticiones del usuario.
servidor.escuchar
Informacion del cliente
lista==true
Decodificar en el vector si la
informacion es para el Tektronix
S == hardcopy
S == acquire
S == select
hardcopy
acquire
select
Se quiere configurar la opcion
HARDCOPY
Se quiere configurar la opcion
ACQUIRE
Se quiere configurar la opcion
SELECT
El ThreadServidor activara la bandera
InfoClienteLista cuando se tenga una
peticion y la devuelve en “S”
Informacion
Para
Tektronix
NO
SI
NO
SI
NO
SI
NO
SI
NO
SI
Decodificar el vector string “s” con las
peticiones del cliente
S == run/stop Run/stop Se quiere configurar la opcion
RUN/STOP
SI
71
El diagrama de flujo de la figura 3.9 es desglosado en las siguientes etapas:
1. Inicializar variables de propósito general: en esta primera se declaran e
inicializan variables de carácter general tal como contadores y variables
para guardar datos temporales.
2. Crear un objeto del tipo ServidorGPIB con nombre “Servidor”, el objeto de
este es permitir la recepción de peticiones de un cliente y generar una
respuesta en base a la misma petición.
3. Crear e inicializar un objeto tipo Tektronix TDS640AS con nombre
“Osciloscopio” el cual hereda de una clase base abstracta madre llamada
Instrumentos GPIB, este proceso se describe en la figura 3.10
4. Llamar al método “escuchar” del objeto tipo “servidorGPIB” para comenzar
a esperar por peticiones del cliente por medio del inicio de un hilo (thread).
5. Cuando una petición esta lista entonces el hilo (thread) que inicio con el
método “escuchar” activa la bandera “InfoClientLista” y es cuando se
procede a descifrar el contenido de este de lo contrario se sigue
esperando por dicha información.
6. Se revisa cual es el instrumento que el cliente desea controlar, si es el
Osciloscopio Tektronix se procede a seguir analizando los datos, de lo
contrario se espera por mas peticiones.
7. Si los datos o ordenes son para el Osciloscopio entonces se revisa que
control se quiere acceder en forma remota, entre los que se revisan están:
Acquire, Hardcopy, Select.
3.3.4.1 Inicialización del servicio manejador de la tarjeta GPIB
La inicialización se refiere a la carga de configuración de la tarjeta GPIB como la
de los instrumentos conectados al bus. La carga de la configuración de la tarjeta
se realiza cuando creamos por primera vez un objeto tipo “InstrumentoGPIB” ver
tabla 3.4, esto se realiza según los siguientes pasos y se describe en la figura
3.10:
72
Si se construye por primera
ves entonces inicializar
Datos inicializados= verdadero
Se crea un objeto tipo
“TarjetaBD”
El objeto tipo “ComunicacionGPIB”
establece comunicacion con la tarjeta y
crea dos thread para transmitir y recibir
datos
Datos inicializados
==
verdadero
SI
NO
Crear un objeto TarjetaBD
TarjetaBD.datosTarjeta
Se accesa a los datos de la
tarjeta almacenados en la base
de datos
Crear un objeto
ComunicacionGPIB
fin
InstrumentosGPIB
Figura 3.10. Método constructor de objetos que extienden de “InstrumentosGPIB”
Se revisa si la configuración de la tarjeta controladora, ha sido leída desde
la base de datos sino se finaliza la ejecución del método.
Si es primera vez que se construirá un objeto que hereda de “Instrumento”
entonces:
Se indica datos inicializados.
Se crea un objeto de tipo “TarjetaBD” y se accede a su método “Datos
tarjeta” que obtiene los parámetros de configuración de la tarjeta
controladora como la dirección IP y el numero de puerto TCP.
Se crea un objeto tipo “ComunicacionGPIB” que se encarga de establecer
un socket TCP-IP con la tarjeta y además se levantan dos thread que
utilizan el mismo socket de comunicación uno para transmitir y otro para
recibir datos de la tarjeta.
73
3.3.4.2 Inicialización del software controlador del Tektronix TDS640A
La inicialización del manejador del Osciloscopio Tektronix se muestra en el
diagrama de flujo de la figura 3.11, donde se ejecuta el método constructor
respectivo que se describe a continuación y es el llamado el método “inicializar”
que carga la configuración del medidor y los respectivos parámetros para su
adecuado control en forma remota.
Crear un thread para el tratamiento
de datos provenientes de la tarjeta
controladora
Este thread permanece en
comunicación con el thread de
recepción del objeto
“ComunicacionGPIB”
Cargar donfiguracion actual del
instrumento
Obtener de la base de datos la
direccion GPIB, ID y el nombre de la
tabla del instrumento en la base de
datos
Cargar comandos de configuracion
almacenados en la tabla del medidor
Se realiza una serie de
interrogaciones al medidor
acerca de su configuracion y
luego se actualiza la respectiva
tabla
fin
inicializar
Figura 3.11 Diagrama de flujo del método “inicializar” del objeto “TektronixTDS640A”
Descripción del método Inicializar del objeto Tektronix :
Establecer una conexión con la base de datos de la tarjeta controladora
para obtener datos de configuración del instrumento Tektronix tales como
dirección GPIB, identificador del instrumento (ID) y el nombre de la
correspondiente tabla en la base de datos de la tarjeta controladora.
Crea un thread para el instrumento con el fin de recibir los datos
destinados para el y poder decidir el tratamiento de estos datos que
pueden ser respuestas a peticiones del instrumento o petición de servicio
por parte del mismo, este thread realmente no se comunica directamente
con la tarjeta sino espera a que el thread de recepción indique que hay
datos provenientes de la tarjeta GPIB.
74
Se cargan de la tabla respectiva en la base de datos los conjuntos de
comandos que pueden ser enviados al medidor.
Se interroga al medidor por su configuración actual para actualizar su
estado en sus correspondientes campos de la tabla en la base de datos.