Hallo Leute ich brauche mal eure Hilfe in Matlab.
Ich bin absoluter Neuling auf dem Gebiet und habe folgendes Problem.
Ich habe Matlab an einen Mikrocontroller angeschlossen der mir über die serielle
Schnittstelle seine Daten liefert(Temperatur, Luftfeuchtigkeit, Licht und Reichweite).
Ich will die Daten in Matlab einlesen und halt grafisch darstellen. Ich habe das auch so weit hin bekommen,
dass Matlab die Daten statisch
mittels der Plot-Funktion grafisch darstellt.
Ich schreibe dafür die ankommenden Daten die ja laufend aktualisiert werden in ein Array
mit von mir festgelegter Grösse und lasse dann das Array plotten.
Mein Problem ist jetzt, wie ich das hin bekomme, dass ich die Daten
dynamisch darstellen kann,sprich die Werte sollen sich in der Grafik selbst fortlaufend aktualisieren.
Hätte einer da evtl einen Tipp für mich ?
clear all;
s = serial('COM1','BAUD',19200,'DataBits',8,'StopBits',1,'FlowControl','hardware');
fopen(s);
fid=fopen('test.dat','w')
i=1;
counter=1;
for counter=1:50
if i==21
i=i-20;
end;
tlog=false; %Logical initialisieren
while ~tlog
tline=fscanf(s); %naechste Zeile aus ASCII-File holen
index\_s=regexpi(tline,'Hauptboard'); %String in tline suchen
if ~isempty(index\_s) %Treffer?
tlog=true;
for j=1:4
index\_s=regexpi(tline,':frowning:');
if isempty(index\_s)
index\_sem=regexpi(tline,','); %Trennzeichen suchen, wird hier
%nicht ausgewertet
temp=strrep(tline,',',' '); %Trennzeichen durch Blank ersetzen
string=strread(temp,'%s',6); %String-Array erzeugen, Anzahl
%der Variablen angeben
temperatur(i,j)=sscanf(char(string(3)),'%d'); %Array-Elemente ausgeben
luftfeuchtigkeit(i,j)=sscanf(char(string(4)),'%d'); %Array-Elemente ausgeben
licht(i,j)=sscanf(char(string(5)),'%d'); %Array-Elemente ausgeben
reichweite(i,j)=sscanf(char(string(6)),'%d'); %Array-Elemente ausgeben
board(j)=true;
else
board(j)=false;
end;%zweites if
tline=fscanf(s);
end %for-Schleife
end; %erstes if
end % while Schleife
i=i+1;
end %erstes For
fclose(s);
fclose(fid);
%--------------------------PLOT-Funktion----------------------------------
for i=1:20
x(i)=i;
end
a1=temperatur;
a2=luftfeuchtigkeit;
a3=reichweite;
a4=licht;
for j=1:4
if board(j)==true
ya1=a1(:,j);
ya2=a2(:,j);
ya3=a3(:,j);
ya4=a4(:,j);
figure;
plot(x,ya1,x,ya2,x,ya3,x,ya4);
grid on;
end;%if
end