Matlab en temps réel ploting plusieurs données à partir du port série

Mon application lit les données à partir de capteurs au travers d'une carte ARDUINO UNO plate-forme, puis enfin à travers du port série, j'ai réussi à lire toutes les données que j'ai besoin de MATLAB. alors maintenant, j'ai 3 les données que je veux tracer (données data2 data3) en temps réel SUR LE MÊME GRAPHIQUE.

J'ai aussi réussi à tracer une données à la fois, avec un peu de code que j'ai trouvé sur mathworks et modifié un peu, ce qui ne convient pas à mon projet.

Voici le code matlab que je suis en utilisant le tracé d'une des données:

clear
clc
%User Defined Properties 
serialPort = 'COM7';           % define COM port #
baudeRate = 115200;
plotTitle = 'Serial Data Log';  % plot title
xLabel = 'Elapsed Time (s)';    % x-axis label
yLabel = 'Data';                % y-axis label
plotGrid = 'on';                % 'off' to turn off grid
min = -200;                     % set y-min
max = 200;                      % set y-max
scrollWidth = 10;               % display period in plot, plot entire data log if <= 0
delay = .01;                    % make sure sample faster than resolution
%Define Function Variables
time = 0;
data = 0;
data2 = 0;
data3 = 0;
count = 0;
%Set up Plot
plotGraph = plot(time,data,time,data2,time,data3);
title(plotTitle,'FontSize',25);
xlabel(xLabel,'FontSize',15);
ylabel(yLabel,'FontSize',15);
axis([0 10 min max]);
grid(plotGrid);
%Open Serial COM Port
s = serial(serialPort, 'BaudRate',baudeRate)
disp('Close Plot to End Session');
fopen(s);
tic
while ishandle(plotGraph) %Loop when Plot is Active
dat = fscanf(s,'%f'); %Read Data from Serial as Float
if(~isempty(dat) && isfloat(dat)) %Make sure Data Type is Correct        
count = count + 1;    
time(count) = toc;    %Extract Elapsed Time
data(count) = dat(1); %Extract 1st Data Element  
data2(count) = dat(2);
data3(count) = dat(3);
data(count);
data2(count);
data3(count);
%Set Axis according to Scroll Width
if(scrollWidth > 0)
set(plotGraph,'XData',time(time > time(count)-scrollWidth),'YData',data3(time > time(count)-scrollWidth));
%plot(time(time > time(count)-scrollWidth),data3(time > time(count)-scrollWidth));
axis([time(count)-scrollWidth time(count) min max]);
%set(plotGraph,'XData',time(time > time(count)-scrollWidth),'YData',data3(time > time(count)-scrollWidth));
%axis([time(count)-scrollWidth time(count) min max]);
else
set(plotGraph,'XData',time,'YData',data);
axis([0 time(count) min max]);
end
%Allow MATLAB to Update Plot
pause(delay);
end
end
%Close Serial COM Port and Delete useless Variables
fclose(s);
clear count dat delay max min baudRate plotGraph plotGrid plotTitle s ...
        scrollWidth serialPort xLabel yLabel;
disp('Session Terminated...');

J'ai besoin de tracer tous les 3 datas (données data2 data3) sur le graphique avec des couleurs différentes. S'il vous plaît aidez-moi à sortir d'ici.

Essayez hold on premier. Aussi, jetez un oeil à mathworks.com/help/matlab/ref/lineseriesproperties.html et de se concentrer sur X/Y/Z/Data.
tenir sur la ne fonctionne pas

OriginalL'auteur hanga mihai | 2014-07-23