Guia de trabajo
Interfaz Gráfica de Usuario Matlab GUIDE
Elaborado por Diego Muñoz G.
Indice temático
Introducción…………………………………………………………………………………………………………… Pág. 3
Elementos de la interfaz grafica……………………………………………………………………………… Pág. 4 Propiedades de los elementos……………………………………………………………………………… ..Pág. 5
Estructuras y funcionamiento GUI…………………………………………………………………………. Pág. 6 Funciones y Callbacks…………………………………………………………………………………………. Pág. 7-12 Pushbutton…………………………………………………………………………Pag .7 Slider……………………………………………………………………………… ....Pag.8
Listbox……………………………………………………………………………… .Pag.10 Edit text………………………………………………………………………… ..Pag.11
Static Text……………………………………… .……………………… ..………Pag .12 Funciones de Apertura y cierre……………………………………………………………………………… Pág. 13 Barras de Menú…………………………………………………………………………………………………….. Pág. 15
Elaborado por Diego Muñoz G.
Introducción
La interfaz grafica de usuario de Matlab o GUIDE simplemente es una herramienta de programación visual de Matlab similar a visual Basic de Microsoft, que provee una programación interactiva de aplicaciones sin necesidad de extensos códigos.
Elaborado por Diego Muñoz G.
Elementos de GUI de Matlab Los componentes de gui de Matlab corresponden
a los elementos interactivos y
funcionales dentro del entorno, los cuales son los siguientes:
Control Check box Editable Text Pop-up menú List Box Push Button Radio Button Toggle Button Slider Static Text Panel button |Button Group
Valor de estil o „checkbox‟ „edit‟ „popupmenu‟ „listbox‟ „pushbutton‟ „radio‟ „togglebutton‟ „slider‟ „text‟
Descri pción Indica el estado de una opción o atributo Caja para editar texto Provee una lista de opciones Muestra una lista deslizable Invoca un evento inmediatamente Indica una opción que puede ser seleccionada Solo dos estados, “on” o “off” Usado para representar un rango de valores Muestra un string de texto en una caja Agrupa botones como un grupo Permite exclusividad de selección con los radio button
El Programa creado llamado “NuevoCnc.Fig” corresponde a una interfaz utilizada para maniobrar un Router cnc que será utilizado a modo de ejemplo a través de la guía.
Elaborado por Diego Muñoz G.
Propiedades de los elementos Los componentes dentro del entorno en sí tienen diversas propiedades. El inspector de propiedades ofrece desde personalizaciones de fuente, colores del elemento e incluso funciones y propiedades que aumentan la complejidad del propio elemento.
Las propiedades que pueden destacarse en las propiedades base (Base Properties) son creaciones de funciones, visibilidad, Tags y datos de usuario. En control, existen funciones de cierre, funciones de accionamiento, entre otras. En Data, Se observa la ruta del archivo, el nombre y unidades de operación. Finalmente en Estilo y apariencia, se modifican colores, Barras de herramientas, posición, etc.
Elaborado por Diego Muñoz G.
Estructura y funcionamiento de las aplicaciones GUI
Una aplicación GUIDE consta de dos archivos: “.m y .fig. “ El archivo .m es el que contiene el código con las correspondencias de los botones de control de la interfaz y el archivo .fig contiene los elementos gráficos.
El script mostrado en el editor corresponde al archivo “.m” de Nuevocnc. Este contiene las diversas funciones de callbacks, subrutinas y funciones para dar interacción entre componentes y sus valores funcionales que harán posible la ejecución del programa.
Elaborado por Diego Muñoz G.
Funcionamiento de Callbacks Ejemplo de accionamiento de Pushbutton: Funciones: Assignin, Get, Fprintf.
Al hacer click derecho en el elemento ubicado en el área de diseño, una de las opciones más importantes es Callbacks , la cual, al ejecutarla, abre el archivo .m asociado a nuestro diseño y nos posiciona en la parte del programa que corresponde a la subrutina que se ejecutará cuando se realice una determinada acción sobre el elemento que estamos editando. Por ejemplo, al ejecutar View Callbacks>>Callbacks en el Push Button, nos ubicaremos en la parte del programa: function pushbutton1_Callback(hObject, eventdata, handles) valorboton_x=get(handles.textt,'string'); if valorboton_x >0 boton_x_mas=get(handles.textt,'string'); assignin('base','boton_x_mas',boton_x_mas); end cus='q'; qus=strcat(cus,boton_x_mas); fprintf(handles.serConn, qus);
Elaborado por Diego Muñoz G.
El Código del push button presentado, tiene la siguiente funcion: La variable “valorboton_x” será obtenida mediante un textbox evaluado por el accionamiento de un slider. Este valor del slider si es mayor a cero, creara una variable en workspace llamada “ Boton_x_mas”, con su propio valor. Luego de esta asignación de variable, esta es enviada impresa a una variable local de comunicación serie “serConn”. La funcion GET descrita tiene la finalidad de obtener un valor de una variable u objeto, esta funciona de la siguiente manera: Get(handles.TAG,’String’) Desde el handles.Tag o la ubicación, obtendremos el valor o string. Con este valor podemos manejar y asignarlo en otra variable local tal como se asigno a continuación. Valor_boton_x=get(handles.textt,'string');
Ejemplo de funcionamiento de Deslizador Seleccionando en el deslizador su callback, podemos crear una funcion que permita asignar un valor numérico dado el deslizamiento. En este programa se realiza dicha funcion y se muestra en un textbox su valor.
Se observa la funcion set que permite asignar un valor de string determinado, este funciona de la siguiente manera:
Elaborado por Diego Muñoz G.
Set(handles.TAG,’String’,Variable); El tal corresponde al identificador de cada elemento, por lo que se llama mediante el handles para editar un valor o “string” a otro elemento o variable. Estas funciones Get y Set, son unas de las principales para obtener y asignar valores y poder manejarlos dentro del entorno como fuera de el. Por lo que resulta interesante usarlo conjunto a simulink o workspace. De acuerdo a esto, podemos utilizar las siguientes funciones: Para simulink
set_param(‘nombre_del_programa/nombre_del_bloque’,’parámetro’,’valor’) Escribe en un bloque, dentro de un parámetro el valor deseado. Por ejemplo es posible asignar un valor numérico desde GUIDE a un bloque constante de simulink.
get_param(‘nombre_del_programa/nombre_del_bloque’,’parámetro’,’valor’) Obtiene un valor desde un bloque de simulink. Por ejemplo obtener un valor de un bloque de constante.
Para Workspace
Es posible crear variables de entorno entre la herramienta de workspace y GUI. Para eso existe la funcion Assignin, que crea una variable y es posible manipularla mediante GUI. Por ejemplo: assignin('base','boton_x_menos',boton_x_menos);
Para obtener dicha variable existe la funcion Evalin que hace lecturas de workspace. Por ejemplo:
evalin('base',boton_x_menos);
Elaborado por Diego Muñoz G.
Funcionamiento de Listbox El listbox provee un listado de valores seleccionables, que permite utilizar diversas opciones. En el ejemplo ya mostrado, puede verse un listado de puertos de comunicación serial seleccionables para ejecutar los procedimientos de Guide.
Se observa que dentro de las propiedades asignables dentro del inspector de propiedades son efectuar valores múltiples de string, por lo que para realizar ese listado visto anteriormente, debe previamente asignarse los puertos com existentes y posibles para utilizar. Elaborado por Diego Muñoz G.
Funciones de Texto, estáticos y editables
Los editores de texto o Editext permiten la lectura y escritura, además de su observación física de dichas acciones. El editext seleccionado de “nuevocnc.fig” presenta la posibilidad de escribir cadenas de texto o strings y el envío posterior mediante una funcion fprintf de impresión a través del puerto serie.
TxText es una variable local obtenida mediante la funcion get proveniente de Tx.send (el editext utilizado), Luego se realiza una impresión serial fprintf, a la variable de comunicación serie SerConn. La finalidad es enviar cualquier tipo de texto desde este editext sin importar su magnitud ni formato a puerto serie
Elaborado por Diego Muñoz G.
El Texto estático tiene una diferencia práctica que radica en la nula posibilidad de escribir un valor en su ejecución, lo que únicamente permite un valor constante previamente establecido para su operación.
La manipulación posible de los textos estáticos como se menciono es solo lectura y puede modificarse mediante el inspector de propiedades en la sección “String”.
En la imagen se destaca un cuadro de text estático, que tiene la finalidad de entregar los valores del deslizador en su ejecución, pero no es posible acceder a el dentro de la ejecución por ser un elemento de solo lectura. De igual manera, la forma para escribir en ellos mediante código es a través de la funcion set y para su obtención mediante la funcion get.
Elaborado por Diego Muñoz G.
Funciones de Apertura y cierre de aplicación Existe la posibilidad de crear funciones o callbacks que se ejecuten sin necesidad de llamarlos ni mediante los métodos realizados anteriormente, sino al momento de iniciar o cerrar la aplicación.
Para la apertura existe al inicio del archivo “.m”, una funcion llamada opening function que permitirá su ejecución en el momento de apertura.
La utilización que suele darse es la declaración de variables globales al inicio de programa que podrán ser utilizadas de manera continua en su ejecución, sin necesidad de ejecutar otras funciones dependientes. En la imagen se puede apreciar la funcion set, que como se ha explicado anteriormente, escribe valores dentro de una variable, en este caso escribe en forma de vector el valor “com 1-12 ” en el Listbox . La finalidad es crear estas variables seleccionables en la apertura del programa, para posteriormente elegir el puerto necesario dada la selección.
Elaborado por Diego Muñoz G.
Es importante señalar que los valores modificados dentro del handles, deben almacenarse luego de su modificación, por lo que siempre es necesario actualizar sus valores de la siguiente forma: % Update handles structure guidata(hObject, handles);
Para la funcion de cierre, debe crearse una funcion “Close request funcion” en el espacio de trabajo. Con la funcion delete, que tiene como finalidad borrar cualquier objeto dentro del entorno, debe utilizarse de la siguiente forma: delete(hObject)
Elaborado por Diego Muñoz G.
Barras de menú Es posible crear una barra de menú con diversas funciones seleccionables. En la imagen se observa el editor de menú, que permite crear opciones y subsecciones de menú. Para crear el callback necesario para su aplicación debe seleccionarse “View callback” y aparecerá el script o código disponible.
function abrir_Callback(hObject, eventdata, handles) [archivo ruta]=uigetfile({'*.ngc'},'Abrir Documento'); if archivo==0 return; else %rutacompleta= strcat(ruta, archivo); fid = fopen('test.ngc'); assignin('base','fid',fid); tline = fgetl(fid); assignin('base','tline',str2double(tline));
la funcion uigetfile permite abrir un directorio de windows y cargar archivos de texto para procesarlos posteriormente, como en el caso del recuadro, que obtiene de la ruta un archivo “.ngc” que es una extension del software inkscape para leer comandos de procesamiento G code.
Elaborado por Diego Muñoz G.