Apéndice A Llamadas de función “Callbacks” En base a la explicación proporcionada en el capítulo 7 de cómo fueron desarrolladas las funciones en memoria, así como la elaboración de los archivos M de función (nombrec.m) que contienen las llamadas de función. Se complementa con el contenido del presente que se enfoca a mostrar los CALLBACKS escritos independientemente tal cual se hubieran tenido que programar a los objetos uno a uno, esto en caso de no haber elegido la opción de crear los archivos de función. Se añadieron al apéndice estas llamadas de función en específico con el propósito de ilustrar la idea, y por la importancia que tiene en el presente trabajo el menú principal (4 elementos). También como ejemplo se presentan los CALLBACKS pertenecientes a los botones que ejecutan las acciones de la GUI1_1 (impulso unitario y escalón unitario). Es muy importante dejar en claro que para cada GUI, sea MENU, GUI1_1 o cualquier otra de las GUIs restantes, los CALLBACKS se implementaron juntos en un solo archivo de función (ver sintaxis en capítulo 7) y no por separado como se ilustra con propósito de comprensión en este apéndice. Obviamente la sintaxis de cada archivo de función tiene un patrón muy parecido pero no por ello los comandos se repiten, ningún archivo de función es idéntico. Si se tiene interés en revisar el contenido de los archivos de llamadas de función pertenecientes a cada GUI, es posible, abriendo en el editor de texto el archivo nombrec.m (siendo “nombre”, el archivo en cuestión. Ej. GUI3_5, de acuerdo a la descripción del capítulo 8). Al efectuar esta revisión se debe tener el cuidado pertinente para no realizar ningún cambio a la sintaxis, porque ello afectaría de manera irreversible el funcionamiento de la GUI modificada. Universidad de las Américas – Puebla 84 Apéndice A Llamadas de función “Callbacks” Botón de aparición (pop up button) del MENU [1] (Visualización de capítulos) cero={'SELECT CHAPTER','','','','','','','',''}; uno={'GUI 1','GUI 2','GUI 3','GUI 4','GUI 5','GUI 6','GUI 7','',''}; dos={'GUI 1','GUI 2','GUI 3','GUI 4','GUI 5','GUI 6','GUI 7','GUI 8','GUI 9'}; tres={'GUI 1','GUI 2','GUI 3','GUI 4','GUI 5','GUI 6','GUI 7','GUI 8','GUI 11'}; cuatro={'GUI 1','GUI 2','GUI 3','','','','','',''}; cinco={'GUI 1','GUI 2','GUI 3','GUI 4','GUI 5','','','',''}; seis={'NO AVAILABLE OPTIONS','','','','','','','',''}; siete={'GUI 1','','','','','','','',''}; ocho={'GUI 3','GUI 5','GUI 6','','','','','',''}; nueve={'GUI 1','GUI 2','GUI 3','GUI 5','GUI 6','','','',''}; diez={'GUI 1','GUI 2','GUI 3','GUI 4','GUI 5','GUI 6','GUI 7','GUI 8','GUI 9'}; condi=get(gco,'Value'); if condi==1 edita=findobj(gcbf,'Tag','programas'); set(edita,'String',cero); elseif condi==2 edita=findobj(gcbf,'Tag','programas'); set(edita,'String',uno); elseif condi==3 edita=findobj(gcbf,'Tag','programas'); set(edita,'String',dos); elseif condi==4 edita=findobj(gcbf,'Tag','programas'); set(edita,'String',tres); elseif condi==5 edita=findobj(gcbf,'Tag','programas'); set(edita,'String',cuatro); elseif condi==6 edita=findobj(gcbf,'Tag','programas'); set(edita,'String',cinco); elseif condi==7 edita=findobj(gcbf,'Tag','programas'); set(edita,'String',seis); elseif condi==8 edita=findobj(gcbf,'Tag','programas'); set(edita,'String',siete); elseif condi==9 edita=findobj(gcbf,'Tag','programas'); set(edita,'String',ocho); elseif condi==10 edita=findobj(gcbf,'Tag','programas'); set(edita,'String',nueve); Universidad de las Américas – Puebla 85 Apéndice A Llamadas de función “Callbacks” elseif condi==11 edita=findobj(gcbf,'Tag','programas'); set(edita,'String',diez); end Caja de lista del MENÚ [2] (Despliegue de programas disponibles de acuerdo al capítulo seleccionado). if condi==2 edic=get(gco,'Value'); if edic==1 GUI1_1 close(gcbf) elseif edic==2 GUI1_2 close(gcbf) elseif edic==3 GUI1_3 close(gcbf) elseif edic==4 GUI1_4 close(gcbf) elseif edic==5 GUI1_5 close(gcbf) elseif edic==6 GUI1_6 close(gcbf) elseif edic==7 GUI1_7 close(gcbf) end elseif condi==3 edic=get(gco,'Value'); if edic==1 GUI2_1 close(gcbf) elseif edic==2 GUI2_2 close(gcbf) elseif edic==3 GUI2_3 close(gcbf) elseif edic==4 GUI2_4 close(gcbf) elseif edic==5 Universidad de las Américas – Puebla GUI2_5 close(gcbf) elseif edic==6 GUI2_6 close(gcbf) elseif edic==7 GUI2_7 close(gcbf) elseif edic==8 GUI2_8 close(gcbf) elseif edic==9 GUI2_9 close(gcbf) end elseif condi==4 edic=get(gco,'Value'); if edic==1 GUI3_1 close(gcbf) elseif edic==2 GUI3_2 close(gcbf) elseif edic==3 GUI3_3 close(gcbf) elseif edic==4 GUI3_4 close(gcbf) elseif edic==5 GUI3_5 close(gcbf) elseif edic==6 GUI3_6 close(gcbf) elseif edic==7 GUI3_7 close(gcbf) elseif edic==8 86 Apéndice A GUI3_8 close(gcbf) elseif edic==9 GUI3_11 close(gcbf) end elseif condi==5 edic=get(gco,'Value'); if edic==1 GUI4_1 close(gcbf) elseif edic==2 GUI4_2 close(gcbf) elseif edic==3 GUI4_3 close(gcbf) end elseif condi==6 edic=get(gco,'Value'); if edic==1 GUI5_1 close(gcbf) elseif edic==2 GUI5_2 close(gcbf) elseif edic==3 GUI5_3 close(gcbf) elseif edic==4 GUI5_4 close(gcbf) elseif edic==5 GUI5_5 close(gcbf) end elseif condi==8 edic=get(gco,'Value'); if edic==1 GUI7_1 close(gcbf) end elseif condi==9 edic=get(gco,'Value'); if edic==1 GUI8_3 close(gcbf) elseif edic==2 GUI8_5 close(gcbf) elseif edic==3 GUI8_6 Universidad de las Américas – Puebla Llamadas de función “Callbacks” close(gcbf) end elseif condi==10 edic=get(gco,'Value'); if edic==1 GUI9_1 close(gcbf) elseif edic==2 GUI9_2 close(gcbf) elseif edic==3 GUI9_3 close(gcbf) elseif edic==4 GUI9_5 close(gcbf) elseif edic==5 GUI9_6 close(gcbf) end elseif condi==11 edic=get(gco,'Value'); if edic==1 GUI10_1 close(gcbf) elseif edic==2 GUI10_2 close(gcbf) elseif edic==3 GUI10_3 close(gcbf) elseif edic==4 GUI10_4 close(gcbf) elseif edic==5 GUI10_5 close(gcbf) elseif edic==6 GUI10_6 close(gcbf) elseif edic==7 GUI10_7 close(gcbf) elseif edic==8 GUI10_8 close(gcbf) elseif edic==9 GUI10_9 close(gcbf) end end 87 Apéndice A Llamadas de función “Callbacks” Esta última llamada de función, perteneciente a un objeto del menú, cuenta con gran cantidad de expresiones, que no son complicadas pero la hacen muy larga. Para optimizar espacio de impresión, se colocaron los códigos en dos columnas teniendo continuidad por página, es decir al concluir la página la primera fila continúa su secuencia en la segunda línea de la misma página que terminando, continúa en la primera columna de la siguiente página. Botón información de MENU [3] . informa={‘Information String’}; helpwin(informa,‘MENU’) Botón cerrar ventana de MENU [4]. close (gcbf) Universidad de las Américas – Puebla 88 Apéndice A Llamadas de función “Callbacks” GUI1_1 Botón que ejecuta el impulso unitario cla; edita=findobj(gcbf,'Tag','EditText1'); m=get(edita,'String'); m=eval(m); des={ '', ' >> % Program P1_1-a', ' >> % Generation of a Unit Sample Sequence', ' >> clf;', ' >> % Generate a vector from -10 to 20', ' >> n = -10:20;', ' >> % Generate the unit sample sequence', ' >> u = [zeros(1,10) 1 zeros(1,20];', ' >> % Plot the unit sample sequence', ' >> stem(n,u);', ' >> xlabel(''Time index n'');ylabel(''Amplitude'');', ' >> title(''Unit Sample Sequence'');', ' >> axis([-10 20 0 1.2]);'}; edita=findobj(gcbf,'Tag','Programa'); set(edita,'String',des); n = -10:20; u = [zeros(1,(m+10)) 1 zeros(1,(20-m))]; stem(n,u); xlabel('Time index n');ylabel('Amplitude'); title('Unit Sample Sequence'); axis([-10 20 0 1.2]); aex4=get(gca,'Xlabel'); aex3=get(gca,'Ylabel'); aex2=get(gca,'Zlabel'); aex1=get(gca,'Title'); set(aex4,'Color',[ 0.9843137254901 0.9803921568627 0.8431372549019 set(aex3,'Color',[ 0.9843137254901 0.9803921568627 0.8431372549019 set(aex2,'Color',[ 0.9843137254901 0.9803921568627 0.8431372549019 set(aex1,'Color',[ 0.9843137254901 0.9803921568627 0.8431372549019 set(gca, 'Color',[ 0.9843137254901 0.9803921568627 0.8431372549019 Universidad de las Américas – Puebla 89 ]); ]); ]); ]); ]); Apéndice A Llamadas de función “Callbacks” GUI1_1 Botón que ejecuta el escalón unitario cla; edita=findobj(gcbf,'Tag','EditText1'); m=get(edita,'String'); m=eval(m); des={ '', ' >> % Program P1_1-b', ' >> % Generation of a Unit Step Sequence', ' >> clf;', ' >> % Generate a vector from -10 to 20', ' >> n = -10:20;', ' >> % Generate the unit step sequence', ' >> s = [zeros(1,10) ones(1,21)];', ' >> % Plot the unit step sequence', ' >> stem(n,s);', ' >> xlabel(''Time index n'');ylabel(''Amplitude'');', ' >> title(''Unit Step Sequence'');', ' >> axis([-10 20 0 1.2]);'}; edita=findobj(gcbf,'Tag','Programa'); set(edita,'String',des); n = -10:20; s = [zeros(1,(m+10)) ones(1,(21-m))]; stem(n,s); xlabel('Time index n');ylabel('Amplitude'); title('Unit Step Sequence'); axis([-10 20 0 1.2]); aex4=get(gca,'Xlabel'); aex3=get(gca,'Ylabel'); aex2=get(gca,'Zlabel'); aex1=get(gca,'Title'); set(aex4,'Color',[ 0.9843137254901 0.9803921568627 0.8431372549019 set(aex3,'Color',[ 0.9843137254901 0.9803921568627 0.8431372549019 set(aex2,'Color',[ 0.9843137254901 0.9803921568627 0.8431372549019 set(aex1,'Color',[ 0.9843137254901 0.9803921568627 0.8431372549019 set(gca, 'Color',[ 0.9843137254901 0.9803921568627 0.8431372549019 ]); ]); ]); ]); ]); NOTA: Cuando las líneas de comando de las funciones expresadas en este apéndice son muy largas se puede notar que se desbordan al siguiente renglón. En MATLAB se deben escribir seguidas y sin el salto de renglón que parece estar indicado. Universidad de las Américas – Puebla 90