Matlab - Paro secuencia

 
Vista:
sin imagen de perfil
Val: 62
Ha disminuido 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Paro secuencia

Publicado por jose (26 intervenciones) el 09/10/2019 15:00:51
Buenos dias, estoy haciendo algunas pruebas con un guide que envia datos a Arduino.
Pero me he encontrado con un problema. mi guide usa un while que hace que se quede esperando datos de arduino te el siguiente modo:

1
2
3
4
5
6
7
8
9
10
11
function pushbutton2_Callback(hObject, eventdata, handles)
global s  Estado_programa_20 Paro_secuencia
Programa=20;
fwrite(s,Programa,'uint8');
while (Estado_programa_20) < (4) % aqui es donde tendria que poder romper la secuencia
    while(s.BytesAvailable > 1)
        Estado_programa_20 = fscanf(s, '%d');
    end
end
set(handles.text8,'string',Estado_programa_20)
guidata(hObject, handles);

El tema es que me gustaria saber si puedo romper el primer while con un boton de paro.

1
2
3
function pushbutton22_Callback(hObject, eventdata, handles)
global Paro_secuencia
guidata(hObject, handles);

He probado muchas cosas pero de momento no lo he logrado, ¿Alguien puede guiarme un poco?
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
Imágen de perfil de JESUS DAVID ARIZA ROYETH
Val: 4.486
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Paro secuencia

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 09/10/2019 15:06:47
lo que puedes hacer es que agregues un 'togglebutton' y cuando ese quede desactivado el programa pare, el código quedaría algo así :

1
2
3
4
5
while (Estado_programa_20) < (4) && get(handles.togglebutton1,'Value')==1
    while(s.BytesAvailable > 1)
        Estado_programa_20 = fscanf(s, '%d');
    end
end
que diría que mientras el estado del programa sea menor que 4 y además el botón esté activado
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: 62
Ha disminuido 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Paro secuencia

Publicado por jose (26 intervenciones) el 09/10/2019 16:30:59
Lo probare y os cuento
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: 62
Ha disminuido 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Paro secuencia

Publicado por jose (26 intervenciones) el 10/10/2019 12:38:58
Buenos dias, lo he probado y no funciona, no hace nada de nada. la secuencia continua.
Solo he añadido esa linea no he añadido nada dentro la funcion del boton.
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 JESUS DAVID ARIZA ROYETH
Val: 4.486
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Paro secuencia

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 10/10/2019 15:22:36
no solo debes agregar esa línea debes agregar un togglebutton en el guide y debe llamarse el tag togglebutton1 y debe además estar activado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 62
Ha disminuido 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Paro secuencia

Publicado por jose (26 intervenciones) el 10/10/2019 15:27:05
Si eso esta en el codigo, el boton esta puesto y su codigo activo pero aun asi no corta el codigo ni rompe el while. Voy a revisarlo.
Saludos.
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: 62
Ha disminuido 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Paro secuencia

Publicado por jose (26 intervenciones) el 10/10/2019 16:07:25
Me temo que para mi codigo no cumple bien, si es cierto que hace cosas pero en el mio no cuadra, gracias nuevamente, he pensado algo asi:

1
2
3
4
5
if (get(handles.pushbutton22,'Value')==1)
            Programa=60;
            fwrite(s,Programa,'uint8');
        break
        end

Esto lo pondria dentro del while pero me dice que tengo que usar return y no acabo de ver muy bien donde.

Con esto lo que hago es para el programa en equecucion y mandar que haga otro de reseteo.
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: 8.146
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Paro secuencia

Publicado por JOSE JEREMIAS CABALLERO (5627 intervenciones) el 09/10/2019 15:06:52
cambia por este dado tu programa

1
2
3
4
5
6
while (Estado_programa_20) < (4) % aqui es donde tendria que poder romper la secuencia
Estado_programa_20
    while(s.BytesAvailable > 1)
        Estado_programa_20 = fscanf(s, '%d');
    end
end


y comparte lo que sale en la ventana de comandos de matlab.

Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab
Servicio de Asesoría Online en Matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 62
Ha disminuido 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Paro secuencia

Publicado por jose (26 intervenciones) el 09/10/2019 16:31:56
Estado de programa vale cero ya que lo inicializo yo desde un comienzo. esa variable la uso para saber si el programa ha terminado concretamente cuando llega a 4 (cuarto paso ha terminado)
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: 62
Ha disminuido 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Paro secuencia

Publicado por jose (26 intervenciones) el 10/10/2019 12:40:02
tal y como comenta aparece un valor de 0 ya que esta variable en teoria la cambia arduino pero en ambos programas tanto en matalab como en arduino se inicializan a 0 hasta que matlab pide un refresco y asi aseguramos tener el valor que corresponde
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: 62
Ha disminuido 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Paro secuencia

Publicado por jose (26 intervenciones) el 15/10/2019 12:53:45
Buenos dias, al final haciendo uso de su idea he solucionado el problema.
He puesto un pulsador externo y mediante arduino cuando lo actuo envio un 5, esto me srive para romper el codigo y ademas al tener otro numero distitnto se que se ha activado.

gracias por la idea y lo doy por cerrado.
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