Habe eine Funktion (.m File) erstellt, welche die serielle Schnittstelle einliest und die Daten welche über einen Mikrocontroller kommen in "Echtzeit" plottet.
Das .m File funktioniert sehr zufriedenstellend.
Code:
%make sure no old serial ports are open clear delete(instrfindall);
%connect to serial port and set baud rate
s1 = serial('com2');
% open connection and send identification (to initalize it or something???) fopen(s1);
fprintf(s1, '*IDN?');
%number of points to be plotted
numberOfPoints = 100;
%initialize with zeros, to hold yvalues
yVal(1:numberOfPoints)= 0;
%delay or pause so serial data doesnt stutter
%pause(1);
axis([0 numberOfPoints 04095]) hold on
title(['Signal']);
set(gca,'Color',[0.50.50.5])
TrueSampleRate = 0;
for i=0:1:500 hold on
tic for index = (1:numberOfPoints)
%reading value from Arduino
yVal(index) = str2num(fgets(s1));
%every 100 points, plot the entire graph
% this might be a bad way to do it, but at least it's "real-time" ifmod(index,20) == 0 set(thePlot,'YData',yVal, 'XData', xVal);
drawnow end
end
TrueSampleRate=1/(toc/numberOfPoints);
hold off
disp(TrueSampleRate);
end
Diesen Plot möchte ich jz gerne in eine GUI integrieren, wo noch dazu einige Sachen angezeigt werden z.B die "TrueSampleRate" in einem kleinen Fenster, welche ich im .m File mit disp(TrueSampleRate) ausgebe.
Wie gehe ich da vor?
Ich habe bereits eine GUI.fig File erstellt mit einem Axes - Modell, aber wie kann ich den Plot aus dem .m File jetzt in die GUI einbinden ? bzw. die selben Daten ins Axes - Modell?
Vielen Dank!!
Bin leider noch nicht so fit in Matlab
wie kann ich den Plot aus dem .m File jetzt in die GUI einbinden ? bzw. die selben Daten ins Axes - Modell?
Indem du das in einem Callback aufrufst.
Falls nötig, bei thePlot = plot(nan); noch das Handle des Koordinatensystems der GUI angeben.
Grüße,
Harald
Hannes23
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 23.12.2014, 01:51
Titel:
Vielen Dank für den Tipp!
Hab jz einfach in die Callback Funktion der GUI "run 'Plot';" geschrieben um die Funktion Plot (.m File) in der GUI statt den Axis anzuzeigen.
Funktioniert einwandfrei! Vielen Dank!
Jetzt möchte ich mit einem Slider in der GUI eine Variable im .m File in Echtzeit verändern..
Wie geht man da vor?
Was muss ich in die Slider Callback Funktion schreiben?
Code:
% --- Executes on slider movement. function slider1_Callback(hObject, eventdata, handles) % hObject handle to slider1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'Value') returns position of slider % get(hObject,'Min') and get(hObject,'Max') to determine range of slider
den Wert holen und deine Funktion damit aufzurufen.
Grüße,
Harald
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.