2013-04-25 80 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 

有了計時器,你也可以,例如,在按鈕的回調中啓動和停止執行。