2014-03-24 5 views
1

Togglebutton을 누르면 활성화되는 while-loop의 실행을 중지하는 데 문제가 있으며 Togglebutton이 "untoggled"상태 일 때 중지됩니다.matlab gui 토글 버튼 while 루프 while

내부 코드는 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

일시 중지가 발생한 루프에 drawnow에 대한 통화를 추가해보세요. GUI의 상태 변화를 폴링해야합니다.

Onestep 함수가 매우 빠르기 때문에 허용 할 수있는 GUI 지연에 따라 drawnow 만 10 번째 반복 (예 :)마다 호출하면됩니다.

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