Я создал gui в matlab, он состоит из трех кнопок, edittexts и сюжета. При нажатии первой кнопки (запуска) matlab запускает выполнение «start callback», который содержит цикл while. Нажатие второй кнопки (кнопка останова) вызывает обратный вызов остановки. Теперь, если я снова нажму кнопку запуска, он начнет выполнение с первая строка обратного вызова или где-то внутри цикла while, где он остался первоначально, когда нажата кнопка остановки. В основном проблема в моем коде заключается в том, что кнопка запуска и остановки работает правильно при первом нажатии, но во второй раз кнопки не работают вообще. ниже мой код:callbacks matlab не работает при втором нажатии
function matgui1_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
set(handles.stop,'Enable','off');
s = serial('COM1');
set(s,'BaudRate',9600);
set(s,'Timeout',20);
set(s,'ReadAsyncMode','continuous');
fopen(s);
handles=guidata(hObject);
handles.set=s;
guidata(hObject,handles);
function varargout = matgui1_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
% --- Запускает на кнопку печати в начале.
function start_Callback(hObject, eventdata, handles)
set(handles.start,'Enable','off');
set(handles.Refresh,'Enable','off');
set(handles.stop,'Enable','on');
drawnow;
s=handles.set;
fprintf(s,'%c','s');
i=1;
string1='start';
set(handles.edit5, 'String', string1);
drawnow;
while(1)
if(s.BytesAvailable>0)
a = fread(s,1,'uint8');
t(i)=a;
drawnow;
plotData=plot(t,'linewidth',1);
drawnow;
grid on;
drawnow;
i=i+1;
end
end
fclose(s)
delete(s)
кнопка остановки обратного вызова
function stop_Callback(hObject, eventdata, handles)
set(handles.stop,'Enable','off');
set(handles.start,'Enable','on');
set(handles.Refresh,'Enable','on');
drawnow;
setup=handles.set;
fprintf(setup,'%c','g');
flushinput(setup);
string1='stop';
set(handles.edit5, 'String', string1);