我正在开发一个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
我正在开发一个MATLAB GUI,应该可以获取串行数据并在处理后将其绘制出来。我使用bytesavailabefcn一个回调函数,当预先指定的字节数(...
正确的语法是:[ax,h1,h2] = plotyy(handles.axes1, G1,m1,G1,m2);