How to interrupt a while loop in Appdesigner by pushing a button?

I'm using appdesigner in 2016a.I have two buttons. One is for starting a while loop and the other is for stopping that loop.But the old method
set(handles.buttonA, 'UserData', 'stop');
is not working for me. what else can I use in appdesigner? Thanks for answering!

5 件のコメント

Geoff Hayes
Geoff Hayes 2016 年 10 月 1 日
Victor Lahore's answer moved here
I Have the same problem:
while 1==1
value = app.Iniciar_button.Value
if value == 'off'
break
end
end
But the button value does not refresh
Geoff Hayes
Geoff Hayes 2016 年 10 月 1 日
Victor - try putting a pause or drawnow statement in your while loop (after the if block) so that the loop is interruptible.
Brian
Brian 2017 年 4 月 27 日
An interrupt can only occur at one of these commands...
When an object's Interruptible property is set to 'on', its callback can be interrupted at the next occurrence of one of these commands: drawnow, figure, getframe, waitfor, or pause.
I usually set pauses in several places within a function to give the push button interrupt a chance to execute. i.e. pause(.00001)
Lâm Ngô Tùng
Lâm Ngô Tùng 2018 年 11 月 28 日
Thank you, Brian.
Bo Sun
Bo Sun 2020 年 12 月 4 日
A pause in the loop after if block works very well, that helps a lot. Thanks.

サインインしてコメントする。

 採用された回答

Geoff Hayes
Geoff Hayes 2016 年 6 月 19 日

2 投票

Helen - what can you tell us about your while loop? Does it have a pause or drawnow function call? If it doesn't then it is not interruptible and so the callback for the second pushbutton to stop the while loop will not be executed.

2 件のコメント

Helen Yang
Helen Yang 2016 年 6 月 19 日
編集済み: Helen Yang 2016 年 6 月 19 日
I don't use pause or drawnow function. I want to do real-time signal process with Audio Systems Toolbox like this
while 1
mySignal = record(deviceReader);
myProcessedSignal = process(mySignal);
play(deviceWriter, myProcessedSignal);
end
but now I can only use tic and toc to control the while loop just like the example code.
Geoff Hayes
Geoff Hayes 2016 年 6 月 19 日
Helen - I would put a small pause as the final line of your while loop so that the other callback has a chance to execute. Though will that matter given that the while condition is always true? How do you expect to exit the loop?

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeStartup and Shutdown についてさらに検索

製品

質問済み:

2016 年 6 月 18 日

コメント済み:

2020 年 12 月 4 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by