Matlab - Fallo en uso de misma variable entre 'function's' en GUI

 
Vista:

Fallo en uso de misma variable entre 'function's' en GUI

Publicado por Carlos (4 intervenciones) el 26/06/2012 15:09:46
Buenas tardes,

llevo muchas horas ya estancado en un error de mi programa y no consigo salir. Se trata de que en dos Button Group hago una elección de un Radio Button en cada uno. Con esta elección quiero que, al darle al botón de calcular, el programa sepa que es lo que tiene que hacer dependiendo de la primera elección a través de un ''if''.

Para que me entendáis:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
function eleccion_SelectionChangeFcn(hObject, eventdata, handles)
 
     global signo
 
     if (hObject  == handles.uno)
 
                  signo = '1'
 
     else
 
                 signo = '0'
 
     end
 
function eleccion_SelectionChangeFcn(hObject, eventdata, handles)
 
     global signo2
 
     if (hObject  == handles.otro)
 
                  signo2 = '1'
 
     else
 
                 signo2 = '0'
 
     end
 
function calculate_Callback(hObject, eventdata, handles)
 
      global signo signo2
 
      if (signo == '1') && (signo2 == '1')
 
              operaciones que tengo definidas
 
      else
 
              otras operaciones que tengo definidas
 
      else

-----------------------------------------------------------------------

Esto es lo que quiero conseguir, pero sin embargo, no lo logro. Qué es lo que hago mal?

Gracias a los que os toméis la molestia de leerme.

Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Fallo en uso de misma variable entre 'function's' en GUI

Publicado por Carlos (4 intervenciones) el 26/06/2012 16:21:48
Perdón por la poca claridad del código. Había dejado huecos para darle formato al texto pero al darle a enviar han desaparecido.

El problema creo que es que la variable global me cambia de formato o algo así, porque no me la identifica en el ''if''. Ponga lo que ponga, incluso si fuerzo la situación en que:

signo == '1' && signo2 == '1'

Me siguen saltando las operaciones que están en el ''else''...


Alguna idea? Qué está mal definido?

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Fallo en uso de misma variable entre 'function's' en GUI

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 27/06/2012 07:13:08
hola.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
function varargout = button_group_caballero2(varargin)
clc
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @button_group_caballero2_OpeningFcn, ...
                   'gui_OutputFcn',  @button_group_caballero2_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end
 
if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
 
function button_group_caballero2_OpeningFcn(hObject, eventdata, handles, varargin)
set(handles.uno,'value',0)
set(handles.otro,'value',0)
handles.signo=0;
handles.signo2=0;
set(handles.mensajes,'string',' ')
handles.output = hObject;
guidata(hObject, handles);
 
function varargout = button_group_caballero2_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
 
function uipanel1_SelectionChangeFcn(hObject, eventdata, handles)
set(handles.mensajes,'string',' ')
if hObject==handles.uno
   signo='1';
end
handles.signo=signo;
guidata(hObject, handles);
 
 
function uipanel2_SelectionChangeFcn(hObject, eventdata, handles)
set(handles.mensajes,'string',' ')
if hObject==handles.otro
   signo2='1';
end
handles.signo2=signo2;
guidata(hObject, handles);
 
function calcular_Callback(hObject, eventdata, handles)
signo=handles.signo;
signo2=handles.signo2;
  if signo=='1' && signo2=='1'
    mensaje='operaciones que tengo definidas';
    set(handles.mensajes,'string',mensaje)
  else
     mensaje='otras operaciones que tengo definidas';
    set(handles.mensajes,'string',mensaje)
 
  end
set(handles.uno,'value',0)
set(handles.otro,'value',0)
handles.signo=0;
handles.signo2=0;
guidata(hObject, handles);
 
function mensajes_Callback(hObject, eventdata, handles)


Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programacion matlab
[email protected]

http://matlabcaballero.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Fallo en uso de misma variable entre 'function's' en GUI

Publicado por Carlos (4 intervenciones) el 27/06/2012 08:46:06
Muchísimas gracias Jose,

ahora probaré tú código y te comento.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Fallo en uso de misma variable entre 'function's' en GUI

Publicado por Carlos (4 intervenciones) el 28/06/2012 11:21:27
Jose,

ya lo he probado y me funciona. Muchísimas gracias!!

Ahora tengo otro problema... en un Gui1 hago unas operaciones y quiero que los resultados que obtenga me los saque en otra Gui, Gui2, pero me da error del tipo ''non-structure array''.

Incluso me sale el error cuando abro el GUI para modificar algo.

-- ??? Attempt to reference field of non-structure array.

-- Error in -> Datos1>uipanel13_CreateFcn at 86
set(handles.text65,'String',undato) % undato es el dato que me pasa del otro GUI

-- Error in -> fui_mainfcn at 96
feval(varargin{:});

..... y más cosas.

He probado definiendo variables globales y no funciona, sale el mismo error. También he probado con el ''save'' y ''load'' e igual...

Se te ocurre qué puede ser?

Gracias por todo.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Fallo en uso de misma variable entre 'function's' en GUI

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 29/06/2012 15:29:52
Usa la funciones global y ademas entra al inspector de los botones de guide que estas haciendo , por alli borra los createfcn, lo cual te está generando errores.
Muchas veces las pregunta que hace el usuario ya fue contestado a otro usario en en foro, por tal motivo ya no contesto, todo es cuestion de revisar las preguntas resultas del foro.
Tu pregunta ya fue contestada, entra a este direccion
http://www.lawebdelprogramador.com/foros/Matlab/1310172-Abrir_y_cerrar_figuras_en_GUI.html

y puedes adaptar a tu guide.


Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programacion matlab
[email protected]

http://matlabcaballero.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar