matlab gui togglebutton在循环时停止

时间:2014-03-24 16:53:36

标签: matlab user-interface while-loop

我无法停止执行一个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

我很感谢有关如何尽快执行此任务的任何提示。

2 个答案:

答案 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