PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe bei Matlab Problem



Baila_me
09.10.2006, 10:51
Hallo Leute ich hoffe mir kann jemand helfen.
Folgendes:

Folgendes Programm (als Anhang) von Matlab liest von der Seriellen Schnittstelle die erfassten Daten aus (temp, Luftfeuchtigkeit, Reichweite, Licht) und stellt diese grafisch da. Die Grafik ist so aufgebaut das für jedes der angeschlossenen Boards(max 4) die Werte dargestellt werden. Jetzt meine Frage ob einer von euch weiss, wie ich das Programm ändern muss damit die Grafische Darstellung nicht nach boards sondern nach Werten sprich in einem Fenster nur die Temperatur von alles Boards in dem anderen die Feuchtigkeit von alles Boards usw. hätte da jemand evtl einen Tip?

Besten Dank

inschenjoer
09.10.2006, 11:08
probier es mal wie folgt:


clear all;
s = serial('COM1','BAUD',19200,'DataBits',8,'StopBits' ,1,'FlowControl','hardware');
fopen(s);
init=false;
%fid=fopen('test.dat','w')
i=1;
counter=1;
buffer=21;

for counter=1:30
if i==21
i=i-20
hold off;
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;
if i==1 & ~init
boardanzahl=0;
end;
for j=1:4

index_s=regexpi(tline,':-(');
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;
if i==1 & ~init
boardanzahl=boardanzahl+1;
end;
else
board(j)=false;
end;%zweites if
tline=fscanf(s);
end %for-Schleife
%--------------------------PLOT-Funktion-------------
for k=1:2
x(k)=i-2+k;
end%for-Schleife
if i>1

subplot(2,2,1);
plot(temperatur);
subplot(2,2,2);
plot(luftfeuchtigkeit);
subplot(2,2,1);
plot(reichweite);
subplot(2,2,1);
plot(licht);

init=true;
pause(0.000001);
end;%if
end; %erstes if

end % while Schleife
i=i+1;


end %erstes For

fclose(s);
%fclose(fid);


Ich kann es aber nicht sicher sagen. Am besten wäre es du stellst mal so ein testfile hier rein. Dann kann man es mal ausprobieren. So wie ich das sehen sind die vier matrizen (temperatur, licht, luftfeuchtigkeit, reichweite) so aufgebaut, dass die spalten die boards sind und die zeilen die Messwerte.

mfg
inschenjoer