Hi!
Nach gefühlten 100 Versuchen habe ich einen Realtimeplot mit Matlab hinbekommen:
Screencapturevid (meine Mega32 simuliert eine verrauschte Sinuskurve)
http://www.villalachouette.de/willia...+rncontrol.wmv
Skript:
Code:
clc
clear
rmappdata(0,'h');
rmappdata(0,'i');
rmappdata(0,'w');
s = serial('COM5','BaudRate',115200);
fopen(s);
s.BytesAvailableFcnMode = 'terminator';
disp('Ready...')
s.BytesAvailableFcn = @empfangen;
figure;
y=(0:100);
h=plot (y);
setappdata(0,'h',h);
setappdata(0,'i',1);
setappdata(0,'w',0);
Callback (wird immer ausgeführt wenn was empfangen wurde). Dieser Code muss unter dem Dateinamen "empfangen.m" gespeichert werden.
Code:
function empfangen (s, event)
i=getappdata(0,'i');
h=getappdata(0,'h');
w=getappdata(0,'w');
%s=getappdata(0,'s');
try
w(i)=str2double(fscanf(s));
catch
disp('error reading from serial...');
fclose(s)
end
i=i+1 ;
setappdata (0,'i',i);
setappdata (0,'w',w);
try %ist die Figure geshclossen worden...
%i ist immer einen größer als länge von w
if i > 1000
set(h, 'ydata',w(i-1000:i-1))
else
set(h, 'ydata',w)
end
ylim([-1.5 1.5]); %yachsenlimit einstellen
drawnow;
catch
fclose(s) %...dann wird serialport auch geschlossen.
disp('...something went wrong or figure was closed.....')
assignin('base', 'w', w) %variable soll auch im workspace verfügbar sein
end
end
Vielleicht hilft das ja dem ein oder anderen... Mal sehen was ich damit noch anfangen kann.
Lesezeichen