Я разрабатываю MATLAB GUI, который должен получать последовательные данные и отображать их после обработки. Я использую bytesavailabefcn
функцию обратного вызова, которая выполняется, когда становится доступным предварительно указанное количество байтов (bytesavailablefcncount
).
Код работает хорошо и получает последовательные данные. Но при использовании plotyy
для построения данных он открывает новую фигуру и наносит на нее данные, а не наносит их на оси, которые нарисованы в GUI и помечены как axes1
. Я использую axes(handles.axes1)
, чтобы присвоить его axes1
, но проблема все еще существует. Я использую MATLAB 2007b и не могу перейти на более новые версии.
вот сокращенная версия моего кода:
function pushbutton1_Callback(hObject, eventdata, handles)
...
...
global s;
s = serial('COM4'); % Create a serial object
s.baudrate = 9600;
s.BytesAvailableFcnMode = 'byte';
s.BytesAvailableFcnCount = 21;
s.BytesAvailableFcn = {@instrcallback,gcf};
fopen(s);
...
...
end
function instrcallback(hObject, eventdata,fignum)
...
...
handles = guidata(fignum);
global s;
axes(handles.axes1);
[ax,h1,h2] = plotyy(G1,m1,G1,m2);
set(ax(1),'YLim',[(y1offset -zoom1-10), (y1offset +zoom1+10)]);
set(ax(2),'YLim',[(y2offset -zoom2-10), (y2offset +zoom2+10)]);
set(ax(1),'BOX' ,'off');
set(ax(1),'Xgrid','on');
set(ax(2),'Ygrid','on');
drawnow;
...
...
end