WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Matlab Plot (.m File) in GUI Integrieren

 

Hannes23

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.12.2014, 03:46     Titel: Matlab Plot (.m File) in GUI Integrieren
  Antworten mit Zitat      
Hallo,

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;

% x axis points
xVal = (1:numberOfPoints);

%create an empty plot
thePlot = plot(nan);

%delay or pause so serial data doesnt stutter
%pause(1);
axis([0 numberOfPoints 0 4095])
hold on

title(['Signal']);
set(gca,'Color',[0.5 0.5 0.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"
    if mod(index,20) == 0
     set(thePlot,'YData',yVal, 'XData', xVal);
        drawnow
    end
 
end
TrueSampleRate=1/(toc/numberOfPoints);
hold off
disp(TrueSampleRate);
end


%close the port and delete it
fclose(s1);
delete(s1)
clear('s1')
delete(instrfindall)



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 Wink

Unbenannt.GIF
 Beschreibung:

Download
 Dateiname:  Unbenannt.GIF
 Dateigröße:  265.37 KB
 Heruntergeladen:  253 mal


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.12.2014, 12:49     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Hannes23

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.12.2014, 01:51     Titel:
  Antworten mit Zitat      
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



Vielen Dank!!
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.12.2014, 11:34     Titel:
  Antworten mit Zitat      
Hallo,

wenn du das bisher mit run aufrufst, ist es ein Skript. Ich würde daraus eine Funktion machen, die als Eingabeargument den Slider-Wert entgegennimmt.

Dann brauchst du nur noch mit dem in der Dokumentation der erzeugten Callback-Funktion angegebenem
Code:
get(hObject,'Value')
den Wert holen und deine Funktion damit aufzurufen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.