Matlab - PASAR HANDLES EN UNA TIMERFUNCTION

 
Vista:
Imágen de perfil de Antonio
Val: 1
Ha aumentado su posición en 33 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

PASAR HANDLES EN UNA TIMERFUNCTION

Publicado por Antonio (2 intervenciones) el 05/02/2020 16:12:37
Buenas mi pregunta es la siguiente como se debe hacer para poder pasar el handles a una timerfunction.

Explico el motivo.

Tengo un programa el cual consulta cada segundo el estado de unas baterias, esto lo tengo correctamente hecho con un timer el cual cada segundo recoge el valor de esa tensión, el problema viene a la hora de querer graficarlo en la gui que estoy realizando.

No consigo pasar el handles de tal modo que pueda acceder a la grafica (axes) y poder plotearlo punto a punto cada segundo.

Adjunto enlace al paste bin para que podais ver la parte de codigo a la que me refiero. Muchas gracias.

https://pastebin.com/KVAinHdP
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
sin imagen de perfil
Val: 918
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

PASAR HANDLES EN UNA TIMERFUNCTION

Publicado por Daniel (354 intervenciones) el 05/02/2020 19:16:18
Hola,

A una función de Timer se le puede pasa todos los parámetros que se desee con en la cedla. Por ejemplo, para pasar un parámetro se tiene que hacer

1
t.TimerFcn = {@graficarTension, parametro};

Ahora la función de timer será

1
2
3
4
5
6
7
function graficarTension(obj, event, parametro)
 
% obj - el propio objeto timer
% event - el objeto del evento
% parameter – el parámetro pasado
 
end

En el planteamiento veo que guardas el objeto en los handles, pero GUIDE no es programación orientado a objetos, por lo que hay que guardar los handles para que se apliquen los cambios. Esto es, cada vez que se modifica los handles hay que hacer

1
guidata(hObject, handles);

donde hObject es el propio GUIDE. En caso contrario, los cambios solamente tiene efecto en la propia función, pero no se propagaran a otras funciones.

Pero, como el objeto timer es siempre el primer parámetro de la función no es necesario guardarlo en los handles.

Saludos,
Daniel Rodríguez.
Analytics Lane
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

PASAR HANDLES EN UNA TIMERFUNCTION

Publicado por Antonio (2 intervenciones) el 05/02/2020 19:36:05
Pues pasando como parámetro handles no me lo reconoce a la hora de acceder en la función a handles.axes1
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
sin imagen de perfil
Val: 918
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

PASAR HANDLES EN UNA TIMERFUNCTION

Publicado por Daniel (354 intervenciones) el 05/02/2020 21:11:58
Lo mejor es que pases solo la referencia a la figura y luego recuperes los valores con guidata(h). Cuando defines la función se hace una copia del objeto handles que no se actualiza ya que en Matlab todos los parámetros se pasan por valor, no por referencia.
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