2013-04-25 63 views
0

我有一个Matlab程序完成了一个实时绘图,从Arduino获取LDR传感器的数据。 现在我想要在GUI中实现该程序,并且我正面临着绘图的一些问题。这是我的程序的一部分,我不知道如何在GUI模式下绘图。Matlab - 用Arduino数据绘图的图形用户界面(GUI)

(...) 虽然(1) 状态= a.analogRead(0); (...) axis tight drawnow; x = [x,state]; plot(x,' - * b'); 格上; 结束

该代码必须在OpeningFcn?我应该只是复制粘贴到那里?我在绘图代码中必须改变什么?非常感谢你!

回答

0

一个无休止的while循环OpeningFcn将无限期地锁定您的GUI。你最好创建一个计时器对象,并在其回调中运行“连续”绘图代码。一个例子:

function myui_OpeningFcn(hObject, eventdata, handles, varargin) 

    % Create timer with delay of 0.1 seconds 
    handles.tmrPlot = timer(... 
     'ExecutionMode', 'FixedRate', ... 
     'Period', 0.1, ... 
     'TimerFcn', @myPlottingFunction); 

    % Store in ui data 
    guidata(hObject, handles); 

    % Start it! 
    start(handles.tmrPlot); 
end 

function myPlottingFunction(src, evt) 
    % Do some plotting 
    plot(rand(10)); 

    drawnow; 
end 

有了计时器,你也可以,例如,在按钮的回调中启动和停止执行。