State button callback- break while loop?
Mostrar comentarios más antiguos
Hi,
I'm trying to loop through hundreds of frames in a file with the push of a state button and the use of a slider in AppDesigner. With the code below, what I've managed so far is to get it to loop until the end of all frames and then stop.
What I'd like it to do further, however, is to loop continuously until the button is pressed, and stop looping by breaking the while loop when the button is un-pressed.
I would greatly appreciate all your tips and suggestions!
Thanks!
v = app.pswitch.Value;
switch v
case 0
% do nothing
case 1
j = get(app.Slider, 'Value');
while j < 300 % (number of frames)
if v == 1
% do this:
pause(1/1000)
j = get(app.Slider, 'Value');
app.Spinner.Value = j+1; % go to the next frame
app.Slider.Value = j+1; % go to the next frame
app.I = imshow(app.testrgb(:,:,3,j+1), [300 1300],...
'Parent', app.UIAxes); % display the next frame
end
end
app.Spinner.Value = 1;
app.Slider.Value = 1;
set(app.pswitch, 'Value', 0)
otherwise
% do nothing
end
Respuesta aceptada
Más respuestas (1)
Mohammad Sami
el 3 de Sept. de 2020
You can try something like this.
app.STOPButton.Enable = true;
app.STOPButton.Value = 0;
while(somecondition)
% do something
if(app.STOPButton.Value == 1)
break;
end
end
app.STOPButton.Enable = false;
app.STOPButton.Value = 0;
6 comentarios
Veena Chatti
el 3 de Sept. de 2020
Rik
el 3 de Sept. de 2020
I don't have much experience with AppDesigner, but I would have expected the code from Mohammad to work. You might need drawnow in your while loop to force Matlab to execute queued callbacks.
Mohammad Sami
el 3 de Sept. de 2020
Editada: Mohammad Sami
el 3 de Sept. de 2020
Are you using a state button ? The code is written for use with state button.
If that does not work, you can use drawnow as suggested by Rik.
Veena Chatti
el 3 de Sept. de 2020
Rik
el 3 de Sept. de 2020
The theoretical limit would be eps. As a practical limit I would suggest 30ms.
It isn't hard to test this, just use a loop to make the time smaller until tic,toc is telling you the pause is much longer than the time you asked for. I you want I can write some code for you. I'm currently on mobile so writing an example is more challenging.
Veena Chatti
el 12 de Sept. de 2020
Categorías
Más información sobre App Building en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!