我无法停止执行一个while-Loop,它是通过按下Togglebutton激活的,并且当Togglebutton被"未被屏蔽时会停止#34;。
里面的代码调用一个函数,该函数使连接到Arduino的steppermotor执行一步。该函数需要大约10ms才能执行。
如果我在函数调用后添加一个暂停,停止工作正常,但是由于Onestep函数已经需要比我希望的更长的执行时间,并且最小暂停时间是10ms,这个解决方案并不令人满意。
% --- Executes on button press in Aplus_button.
function Aplus_button_Callback(hObject, eventdata, handles)
while get(hObject,'Value')
Onestep(1, 'Motor', handles)
% if i add a pause() here it works
end
我很感谢有关如何尽快执行此任务的任何提示。
答案 0 :(得分:0)
尝试在循环中添加对drawnow
的调用,暂停。这应该在GUI上轮询状态的任何变化。
由于您的Onestep
函数非常快,您可能只希望每10次迭代(例如)调用drawnow
,具体取决于您可以容忍的GUI延迟。
答案 1 :(得分:0)
function button1_Callback(hObject, eventdata, handles)
% hObject handle to while_button1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
q=0;
while get(hObject,'value')
drawnow
q=q+1
end