How to stop a "while" iteration loop inside a callback push button subroutine, clicking another push button?
7 ビュー (過去 30 日間)
古いコメントを表示
I wrote a "gui" to take temperature data from a sensor connected to Arduino board, and plot it. All of that, using Arduino package support. The action start when i click "Register" push button, and it goes right, cause I give it a specific time to plot.
But, I want to extend plotting duration indefinitely, until I click a "Stop" push button. This is the code inside "registerButton" callback:
delete(instrfind('Type', 'serial'));
puerto = get(handles.portEdit, 'String');
delete(instrfind({'Port'},{puerto}));
a = arduino(puerto);
for i = 2:19
a.pinMode(i, 'input')
end
handles.a = a;
t_s = str2double(get(handles.tiempoButton, 'String'));
% Used only when i need a specific time
a_pin = str2double(get(handles.pinAnalogButton, 'String'));
escala = str2double(get(handles.scaleFactorEdit, 'String'));
Y(1) = handles.a.analogRead(a_pin)*escala;
t(1) = 0;
tic;
handles.q = false;
i = 2;
while(handles.q == false)
Y(i) = handles.a.analogRead(a_pin)*escala;
t(i) = toc;
i = i + 1;
plot(t,Y), grid on;
pause(0.01)
end
Here, "handles.q" represents the state of "stopButton". "false" means "stopButton" isn't pressed and "while" loop goes on, until I click it, so, loop ends. I would like to replace "handles.q == false" with the right code.
How can I do that?
0 件のコメント
採用された回答
Image Analyst
2012 年 9 月 22 日
You might be able to assign handles.q = false in your other callback while this one is running. Just be sure to call guidata() so that handles is updated so that other functions can see that you've changed the value of handles.q.
Or you can use one of the ways listed in the FAQ: http://matlab.wikia.com/wiki/FAQ#How_can_I_share_data_between_callback_functions_in_my_GUI.28s.29.3F
3 件のコメント
Image Analyst
2012 年 9 月 22 日
Perhaps you need to call guidata inside the loop to pull the updated handles structure into that function.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で MATLAB Support Package for Arduino Hardware についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!