Está en la página 1de 14

3.

GUI: COMPORTAMIENTO Y ELABORACION


3.1 Introduccin
Despus de abrir un nuevo GUI, pero antes de aadirle componentes, se deben definir algunos aspectos relacionados con su comportamiento, como sus dimensiones, acceso y generacin de los archivos FIG-File y M-File. Lo anterior, se puede hacer valindose del cuadro de dilogo GUI Options que se encuentra en el men Tools de la barra de herramientas.

Seleccin de opciones de comportamiento del GUI


Para la fijacin de opciones del comportamiento de un GUI 1. Abra la ventana figura del GUI, seleccionando la opcin en blanco que se encuentra por defecto. 2. Despliegue el men Tools de la barra de herramientas del editor del GUI, y seleccione GUI Options. Se despliega el cuadro que muestra la Figura 3.1

Figura 3.1. Cuadro de dilogo GUI Options

El cuadro de dilogo GUI Options permite seleccionar si se quiere que el GUIDE genere solamente el archivo FIG-File o tanto el archivo FIG-File como el M-File. Permite, tambin, la seleccin de un conjunto de diferentes comportamientos en el GUI denominados Resize behavior, CommandLine Accesibility, Generate FIG-File and M-File, Generate Callback Function Prototypes, GUI allows Only One Instance to Run (Singleton), Using the System Background Colors y Generate FIG-File Only.

Comportamiento para el Re-Dimensionamiento (Resize Behavior)


Mediante la definicin de este comportamiento se controla si el usuario puede redimensionar la ventana figura del GUI y el cmo maneja MATLAB el redimensionamiento. GUIDE facilita tres opciones: Non-resizable: Los usuarios no pueden cambiar el tamao de la ventana Proporcional: MATLAB automticamente cambia el tamao de los componentes en el GUI, proporcionalmente al tamao de la nueva ventana figura Other (Use ResizeFcn): Programa al GUI para que se comporte en una forma determinada cuando el usuario re-dimensiona la figura Las dos primeras opciones, simplemente, ajustan las propiedades de la figura apropiadamente y no requieren alguna otra accin. A continuacin se describe cada una de las opciones y el usuario debe verificar en el Inspector de Propiedades los cambios que se operan con cada una de ellas

Opcin No-Redimensionable (Non-resizable)


Esta opcin hace que la ventana del GUI no sea re-dimensionable. Por ejemplo, los cuadros de dilogo para pregunta, interjeccin, mensajes de error no son redimensionables, porque una vez que el usuario interacta con ellos no la necesita lo que justifica el que no sea re-dimensionable. Al seleccionar esta opcin, GUIDE ajusta las siguientes propiedades para hacer que el GUI no sea re-dimensionable. Units: esta propiedad se ajusta al valor characters para la figura del GUI, el control Axes y todos los otros uicontroles. Con esta propiedad el GUI se despliega con el tamao correcto en diferentes computadores Resize: esta propiedad se ajusta a off ResizeFcn: esta propiedad se deja en blanco

Opcin Proporcional (Proportional)


Esta opcin permite a los usuarios re-dimensionar el GUI de tal manera que adems escala los componentes en cuanto a tamao y posicin en relacin con el nuevo tamao de la figura. Se debe tener en cuenta que no se cambia el tamao de letra de las leyendas de los componentes y, an mas, si el tamao del componente se reduce

considerablemente, estas leyendas no se alcanzan a leer. Este comportamiento trabaja bien con herramientas simples de un GUI y en cajas de dilogos que hacen ajustes sin cerrarlos. Al seleccionar esta opcin, GUIDE ajusta las siguientes propiedades que hacen que el GUI se re-dimensione proporcionalmente: Units: esta propiedad se ajusta al valor normalized para el control Axes y todos los otros uicontroles. Con lo anterior, estos componentes se re-dimensionan y re-localizan con el re-dimensionamiento de la figura Units: esta propiedad se ajusta al valor characters para la figura del GUI, de tal manera que esta se despliega con el tamao correcto en el momento de ejecutarse, en base a algunos cambios en el tamao de letra Resize: esta propiedad se ajusta a on ResizeFcn: esta propiedad se deja en blanco

Opcin especificada por el usuario (Other (Use ResizeFcn))


Se pueden crear GUIs que acomoden su tamao y que al mismo tiempo mantengan su apariencia y utilidad de su diseo original mediante la programacin de una rutina callback para la figura denominada ResizeFcn. Esta rutina permite el reclculo del tamao y la posicin de cada componente en base al nuevo tamao de la figura. Se utiliza mas generalmente en aplicaciones que requieren interaccin con el usuario cuando est trabajando con el GUI. Tal aplicacin podra contener axes para desplegar datos y varios componentes cuyas posiciones y tamaos son crticos para el uso exitoso de la interface. Al seleccionar esta opcin, GUIDE ajusta las siguientes propiedades que hacen que el GUI se re-dimensione de acuerdo a la rutina ResizeFcn: Units: esta propiedad se ajusta al valor characters para la figura del GUI, el control Axes y todos los otros uicontroles. Con esta propiedad el GUI se despliega con el tamao correcto en el momento de su ejecucin Resize: esta propiedad se ajusta a on ResizeFcn: esta propiedad, para la figura requiere de una rutina callback para manejar el re-dimensionamiento

Acceso desde la lnea de comandos (Command-Line Acceessibility)


Se puede restringir el acceso al manejo de la figura del GUI desde la lnea de comando con la opcin Command-Line Accessibility. Esto previene a los usuarios

del cambio no advertido en la apariencia del GUI mediante la entrada de comandos, tales como plot que alteran la figura normal. La opcin por defecto es Callback (GUI becomes Current Figure within Callbacks) y con ella, el GUI puede, solamente, convertirse en la figura normal de MATLAB mediante el comando gcf mientras se ejecuta un callback. Pueden darse ocasiones en que se quiere un manejo de la figura del GUI que sea accesible desde la lnea de comandos. Por ejemplo, se podra requerir que el GUI despliegue grficos creados en la lnea de comandos. Para este caso, se debera seleccionar la opcin On(GUI may become Current Figure from Command Line). Hay cuatro opciones para el acceso desde la lnea de comandos que son: Callback (GUI becomes Current Figure within Callbacks) Off (GUI never becomes Current Figure) On (GUI may become Current Figure from Command Line) Other (Use settings from Property Inspector)

Propiedades de la figura que controlan acceso


Se tienen dos propiedades en la figura que controlan el acceso a ella desde la lnea de comandos que son HandleVisibility: Esta propiedad determina si el manejo de la figura es visible a comandos que intenten accesar la figura normal IntegerHandle: Esta propiedad determina si un manejo de la figura es un nmero entero o de punto flotante HandleVisibility-Callback. Al ajustar la propiedad HandleVisibility a Callback se causa que las estructuras (handles) sean visibles desde el interior de las rutinas callback o funciones invocadas mediante las rutinas callbacks, pero no desde dentro de funciones invocadas desde la lnea de comandos. Esto constituye una forma de proteger a los GUIs desde la lnea de comando de los usuarios mientras se permite que las rutinas callbacks tengan completo acceso a la estructura de los objetos. Se debe utilizar esta opcin si el GUI contiene Axes. HandleVisibility-Off. Al ajustar la propiedad HandleVisibility a Off se remueve la estructura de la figura de la lista raz de objetos hijos de tal manera que no se convertir en la figura normal (que es el objeto para salidas grficas). La estructura se mantiene como vlida, sin embargo, hasta que un comando que especifique que la estructura, explcitamente, todava trabaja (por ejemplo close(1). Sin embargo, no se pueden utilizar comandos que operen solamente

sobre la figura normal o axes. Estos comandos incluyen a xlabel, ylabel, zlabel, title, gca, gcf y findobj HandleVisibility-On. Las estructuras HandleVisibility se ajusta a On son siempre visibles cuando

IntegerHandle. Al ajustar la propiedad IntegerHandle a Off se causa que Matlab asigne estructuras con nmeros reales no reutilizables (por ejemplo, 67.0001221) en vez de enteros. Esto reduce considerablemente la posibilidad de un algo accidentL en el desempeo de una operacin en la figura El uso del findobj. Al ajustar el comportamiento Command-Line Accessibility al valor Off la estructura de la figura del GUI se mantiene escondida. Esto significa que no se puede utilizar findobj para localizar las estructuras de los uicontroles en el GUI. Como alternativa, el archivo GUI M-File crea una estructura handle que contiene las estructuras de cada control en el GUI y pasa esta estructura a subfunciones La siguiente tabla muestra un resumen de cmo cada una de las cuatros opciones del comportamiento Command-Line Accessibility ajustan las propiedades HandleVisibility e IntegerHandle en el Inspector de Propiedades.

Opcin Callback Off On Other

HandleVisibility IntegerHandle Callback Off On User specifies Off Off On User specifies

Generacin de archivos FIG-File y M-File


Se selecciona Generate FIG-File y M-File en el cuadro de dilogo GUI Options si se quiere que el GUIDE cree tanto el archivo FIG-File como el archivo M-File (opcin por defecto). Despus de seleccionada esta opcin, se puede escoger cualquiera de los siguientes opciones incluidas dentro del marco para configurar el archivo M-File: Generate callback function prototypes GUI allows only one instance to run (singleton) Use system color scheme for background (recommended)

Opcin Generate callback function prototypes


Al seleccionar la opcin Generate callback function prototypes en el cuadro de dilogo GUI Options, GUIDE aade una subfuncin al GUI M-File para cualquier componente que se aada en el GUI (se observa que los controles marco, axes y static text no utilizan su propiedad callback y, por lo tanto, no tienen subfuncin). Se debe, entonces, escribir el cdigo para el callback en esta subfuncin. GUIDE tambin aade una subfuncin cuando se edita una rutina callback desde el editor de GUI desplegando un men contextual haciendo clic derecho sobre el mouse (Figura 3.2) y cuando se aaden mens al GUI utilizando el editor de mens.

Figura 3.2 Despliegue de subfunciones desde el GUI

Asignacin de nombres a las Subfunciones callback


Cuando se aade un componente en el GUI, GUIDE asigna un valor a su propiedad Tag que se utiliza para generar el nombre del callback. Por ejemplo, el primer push button que se aade es nombrado como pushbutton1. Cuando se genera el archivo M-File, GUIDE aade una subfuncin callback denominada pushbutton1_Callback. Si se define un Button-DownFcn para el mismo botn, GUIDE llama a su subfuncin como pushbutton1_ButtonDownFcn.

Sintaxis de una funcin Callback


La sintaxis de la funcin Callback requiere de tres argumentos y se escribe en la siguiente forma

function objectTag_Callback(hObject, eventdata, handles)

El argumento hObject es la estructura del objeto cuyo callback se est ejecutando. El argumento eventdata se establece como vacio y es reservado para un uso futuro. El argumento handles es una estructura que contiene las estructuras de todos los componentes en el GUI cuyos nombres de campos son definidos mediante la propiedad Tag del objeto. Puede tambin, utilizarse para pasar datos a otras funciones callback o la lnea de comandos. Por ejemplo, si se instala un botn push button cuya propiedad Tag se ajusta a pushbutton1, entonces GUIDE genera la siguiente subfuncin en el archivo GUI M-File encabezada con el siguiente nombre:

function pushbutton1_Callback(hObject, eventdata, handles)

Asignacin de la propiedad String de una funcin Callback


Cuando se aade un componente al GUI, su propiedad Callback es ajustada al valor % automatic. Este valor seala al GUIDE que reemplace el nombre de la funcin callback en el archivo GUI M-File cuando guarde o ejecute el GUI. Por ejemplo, GUIDE ajusta la propiedad Callback para el uicontrol pushbutton1 a

my_gui(pushbutton1_Callback, gcbo, [], guidata(gcbo))

donde, my_gui, el nombre del archive GUI M-File pushbutton1_Callback es el nombre de la subfuncin rutina callback definida en my_gui gcbo es un comando que regresa la estructura del objeto callback (por ejemplo, pushbutton1) [] es un lugar reservado para el argumento eventdata, normalmente sin usar guidata(gcbo) regresa la estructura handles

Opcin GUI allows only one instance to run (singleton)


Esta opcin permite que se seleccione uno de dos comportamientos en la figura del GUI en cuanto al despliegue de sus ventanas y que son:

Permite a Matlab que despliegue solamente una ventana del GUI Permite a Matlab que despliegue varias ventanas del GUI Si se permite solamente una ventana, Matlab reutiliza la figura del GUI existente cuando se aplica el comando para ejecutar el GUI. Si ya existe un GUI, Matlab lo hace desplegar en el frente en vez de crear una nueva figura. Si se deja en claro esta opcin, Matlab crea una nueva figura GUI cada vez que se aplica el comando para ejecutarla

Opcin Use system color scheme for background (recommended)


El color utilizado para los componentes del GUI vara en sistemas de computadores diferentes. Esta opcin habilita para hacer que el color del fondo de la figura del GUI sea el mismo que el color por defecto del fondo del uicontrol, que depende del sistema. Si se selecciona la opcin Use system color scheme for background (recommended), GUIDE cambia el color de fondo de la figura del GUI para resaltar el color de los componentes del GUI. La Figura 3.3 ilustra los resultados con y sin diferenciacin en el color del sistema:

Generacin de archivos M-File solamente


Se selecciona Generate FIG-File only en el cuadro de dilogo GUI Options si no se quiere que GUIDE genere el archivo M-File. Cuando se guarda el GUI desde el edito, GUIDE crea un archivo FIG-File que se puede redesplegar utilizando el comando open

Figura 3.3 Opcin Use system color scheme for background

Cuando se selecciona esta opcin, se debe ajustar la propiedad callback de cada componente en el GUI a un valor de caracteres que Matlab puede evaluar y desarrollar la accin deseada. Este valor puede ser una expresin o el nombre de un archivo M-File. Seleccione esta opcin si se quiere utilizar un estilo de programacin completamente diferente que la suministrada por el archivo GUI MFile.

3.2 GUI: RESPUESTA PASO DE UN SISTEMA DE PRIMER ORDEN


La interfaz grfica que se observa en la Figura 3.4 se construye para simular la respuesta paso de un sistema lineal SISO de primer orden especificando los parmetros dinmicos y de la simulacin y mostrando los resultados grficamente.

Figura 3.4 GUI Sistema Lineal de Primer Orden

3.2.1 Configuracin del GUI


Se instalan cinco botones Edit Text con los cuales se capturen los parmetros dinmicos del sistema, es decir, la constante de tiempo y la ganancia, y los parmetros especficos de la simulacin como el cambio paso en la variable de entrada, la condicin inicial de la variable de salida y el tiempo. Adems, se instala un botn Axes donde desplegar en forma grfica la respuesta para los valores de los parmetros asignados, un botn Push Button con el cual se ejecute la solucin

de la ecuacin diferencial y seis botones Static Text para titular la interfaz y cada uno de los parmetros que se capturen en los botones Edit Text.

Componentes Static Text


1. Instalacin: Instale seis botones Static Text distribuidos como se observan en la Figura 3.4, y despliegue el inspector de propiedades para la correspondiente asignacin. 2. Propiedad String: Asgneles los nombres observados en la figura. 3. Propiedad BackgroundColor: Asgneles el color gris 4. Propiedad ForegroundColor: Es el color de las letras observado en cada uno de ellos. El superior es rojo y los otros color negro 5. Propiedad FontSize : Es el tamao de las letras observado en cada uno de ellos. El superior es tamao 13 y los otros tamao 10 6. Propiedad HorizontalAlignment: Es la alineacin horizontal del ttulo en cada uno de ellos. El botn superior se ajusta al valor center (centrado), mientras que los localizados a la izquierda se ajustan al valor left (a la izquierda). 7. Propiedad FontWeight: Es el estilo de letras del ttulo en cada uno de ellos. despliegan lineas de texto. La propiedad FontWeight, del botn superior, se ajusta al valor bold para mostrar el ttulo en negrita. 8. Propiedad Position: Es la asignacin de la posicin (abscisa y ordenada) del botn en el GUI y las dimensiones (ancho y alto). Utilcela para ajustar los botones colocados a la izquierda con el mismo ancho y alto. 9. Alineacin: Seleccione todos los botones Static Text instalados para alinearlos sobre una misma lnea a la izquierda. A continuacin presione el icono Align Objects incluido en la barra de herramientas y seleccione en el marco Horizontal la opcin deseada como se observa en la Figura 3.5. Presione el botn OK

Componentes Edit Text


1. Instalacin: Instale cinco botones Edit Text distribuidos como se observan en la Figura 3.4, y despliegue el inspector de propiedades para la correspondiente asignacin. 2. Propiedad String: Asgneles el valor cero a cada uno de ellos como se observa en la Figura 3.4 3. Propiedad HorizontalAlignment: Ajstela al valor right (derecha) para cada uno de ellos. 4. Propiedad Tag: Asigne los siguientes nombres tau_edit1 al de la constante de tiempo, K_edit2 al de la ganancia, X_edit3 al de la entrada, Yo_edit4 al

de la salida y t_sim_edit5 al de simulacin. Observe las propiedades Callback y CreateFcn en el inspector de propiedades donde se nota la asignacin del nombre a cada una de las funciones correspondientes para cada uno de los botones Edit Text 5. Archivo M-File: Despliegue el archivo M-File presionando el icono correspondiente localizado en la barra de herramientas y verifique que han sido incluidas dos funciones para cada uno de los botones con los nombres por ejemplo de tau_edit1_CreateFcn y tau_edit1_Callback

Figura 3.5. Alineacin horizontal

6. Propiedad Position: Haga un ajuste manual de su localizacin y tamao como se observa en la Figura 3.4. Utilice el inspector de propiedades de cada uno de los botones Edit Text para asignarle la misma altura de los botones Static Text.

Componente Axes
1. Instale un botn Axes con la localizacin y el tamao ajustados manualmente como se observa en la Figura 3.4. Este componente se deja ajustado a las propiedades asignadas por defecto

Componente Push Button


1. Instalacin: Instale un botn Push Button como se observa en la Figura 3.4, y despliegue el inspector de propiedades para la correspondiente asignacin. 2. Propiedad String: Introduzca la palabra Plot como se observa en la figura

3. Propiedad HorizontalAlignment: Ajstela al valor center (centro). 4. Propiedad Tag: Asigne el nombre plot_pushbutton1. Observe en el inspector de propiedades Callback el nombre a la funcin correspondiente 5. Archivo M-File: Despliegue el archivo M-File presionando el icono correspondiente localizado en la barra de herramientas y verifique que ha sido incluida la funcin plot_pushbutton1_Callback

3.2.1 Programacin del GUI


Despus de elaborada la distribucin de los botones en la interfaz se contina con la programacin de las acciones que se requiere que cada uno de ellos realice. En la interfaz construida, los botones Static Text no necesitan de cdigo porque su funcin es, solamente, el despliegue del ttulo especificado dentro de su propiedad String. Segn sea la accin que realiza cada uno de los otros botones, en las funciones correspondientes se debe digitar la codificacin correspondiente.

Componentes Edit Text


Los botones Edit Text son los componentes mediante los cuales el usuario introduce un dato y esta debe ser capturada mediante la programacin codificada en el archivo M-File de Matlab debe capturar dicha informacin. A continuacin se describe la correspondiente al botn tau_edit1_CreateFcn y tau_edit1_Callback. Se deja como ejercicio la adicin del cdigo correspondiente a los otros cuatro componentes Edit Text.

Function tau_edit1_CreateFcn
Se puede observar en el archivo M-File, que Matlab en la funcin CreateFcn de un componente Edit Text introduce el siguiente cdigo al instalar el botn

if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end

Con la palabra clave ispc y el ciclo de control ifelseend se verifica si el Matlab se encuentra instalado en un computador personal (PC) con sistema

operativo Windows. Si es verdadero se cumple la sentencia ordenada en el segundo rengln, pero si no se cumple, entonces, se ejecuta la sentencia del cuarto rengln del ciclo. Con el comando set se ajustan las propiedades del botn o componente programado en la funcin en la cual est incluido el ciclo de control. En el ciclo anterior, el segundo rengln ajusta el color de fondo del botn ('BackgroundColor') al blanco ('white'). Es decir, que la sintaxis del comando set es:

set(Objeto, 'Propiedad', 'Valor de la Propiedad')

1. Dentro de la funcin tau_edit1_CreateFcn, cambie el valor white, por otro valor como yellow, black, blue, cyan, green, etc. Haga correr la simulacin del GUI y verifique que el fondo del botn muestra el fondo con el color especificado en el cdigo La sentencia construida en el cuarto rengln del ciclo anterior, ajusta la propiedad del color del fondo del botn Edit Text al valor por defecto de dicha propiedad. Para esto se emplea la palabra clave get que se aplica para adquirir la informacin sobre las propiedades o caractersticas de un objeto. En este caso, el cero que se observa como primer argumento significa el objeto por defecto y a continuacin, el segundo argumento captura la correspondiente propiedad)

Function tau_edit1_Callback
En esta funcin se codifica la captura del valor introducido por el usuario en la propiedad String del botn denominado tau_edit1_Callback. Para ello se introduce las siguientes sentencias

tau = str2double(get(hObject, 'String')); if isnan(tau) set(hObject, 'String', 0); errordlg('Input must be a number','Error'); end

En la primera sentencia, el comando str2double convierte la propiedad String introducida como character a un valor numrico de doble precisin. En este caso

dicha propiedad es previamente capturada con la palabra clave get. El valor convertido se almacena con el nombre de tau. Con el ciclo de control ifelseend y la palabra clave isnan se verifica si el valor tau no es nmero o si. Si se verifica que no es nmero, el segundo rengln ajusta la propiedad String al valor cero y despliega un cuadro de dilogo con un mensaje de error con la leyenda y el ttulo especificados como argumentos del comando errordlg

2. Dentro del callback de cada uno de los restantes botones Edit Text introduzca un cdigo similar al anterior para la captura y verificacin del valor introducido en cada uno de ellos. Tenga en cuenta que debe asignar un smbolo al valor capturado; se sugiere que sea el mismo colocado en la propiedad Tag. 3. Ejecute el GUI y asigne cualquier valor que sea no numrico en cualquiera de los botones Edit Text. Se verifica que se despliega el cuadro de dilogo con el mensaje de error. En caso contrario, la asignacin es correcta y no se despliega el cuadro de dilogo.

También podría gustarte