我编写了一个使用虚拟 COMM 端口实时读取数据的 Matlab 脚本。我在 mfile 中完成了大量的信号处理。
接下来,我觉得需要一个紧凑的 GUI,将信息显示为摘要。
我最近才开始挖掘和阅读更多 Matlab 的内置 GUI 工具 GUIDE。我已经学习了一些教程,并且在按下按钮后成功地让我的图表显示在我的 GUI 上。
但是,我希望GUI 实时更新。我的数据向量不断更新(从 COMM 端口读取数据)。我希望 GUI 使用较新的数据不断更新图表,而不是依靠按下按钮进行更新。有人可以为我指出正确的背景更新方向吗?
这是当前用于 GUI 的相关代码:
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global data
global time
% Time domain plot
axes(handles.timeDomainPlot);
cla;
plot (time, data);
编辑更改的代码:
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%Setting it to display something when it ends
% t = timer('TimerFcn', 'timerOn=false; disp(''Updating GUI!'')',...
t = timer(...
'TasksToExecute', 10, ... % Number of times to run the timer object
'Period', 3, ...
'TimerFcn', GUIUpdate());
%Starting the timer
start(t)
function GUIUpdate()
global data
global time
%Parameters below axes
global min
global max
% Time domain plot
axes(handles.timeDomainPlot);
cla;
plot (time, data);
%Other parameters:
set(handles.mean, 'String', mean);
set(handles.max, 'String', max);
我得到的错误是:
??? Error using ==> GUI_Learning>GUIUpdate
Too many output arguments.
Error in ==>
@(hObject,eventdata)GUI_Learning('pushbutton1_Callback',hObject,eventdata,guidata(hObject))
??? Error while evaluating uicontrol Callback