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 als LabView Alternative - Progammiertipps erbeten

 

Axel
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 29.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.08.2016, 14:29     Titel: Matlab als LabView Alternative - Progammiertipps erbeten
  Antworten mit Zitat      
Hallo,

ich habe eine etwas allgemeinere Frage. Ich möchte meine Versuchsanlagen gerne mit Matlab steuern. Gewünschte Funktionalitäten sind dabei hauptsächlich GUI, online Graphen, und Datenspeicherung. Ich würde das ganze gerne Funktionsbasiert aufbauen, um nicht immer alles neu schreiben zu mussen (bzw. Copy paste).

Hier kurz zwei Beispiele wie ich zur Zeit Daten vom Gerät auslese und in einem Graph anzeigen lasse.

Code:
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

erg = Keithley2701_Rs232;
axes(handles.axes1);
plot(erg(1,:),erg(2,:));


Die Funktion Keithley2701_Rs232:
Code:

function erg = Keithley2701_Rs232

Periode = 1;
Zaehler = 2;

k2701 = keithley2701_ini('COM3');

for i = 1:5
    if i == 1; tg = tic(); end;
    Zaehler = Zaehler + 1;
    out = keithley2701_read(k2701);
   
        while toc(tg)<=Periode * Zaehler;
        end
    erg(1,i) = toc(tg);
    erg(2,i) = out(1);
end

fclose(k2701)
delete(k2701)
clear k2701
end


Die beiden anderen Funktionen initiieren das Messgerät und Lesen einen Temperaturwert aus.

Ich würde mir jetzt beispielsweise gerne einen onlinegraph anzeigen lassen, welcher immer mitläuft. Ich könnte sicherlich einfach den ganzen Code in der Pushbutton funktion zusammenschreiben, was mir aber die Möglichkeit nimmt das einfach über die funktionen aufzurufen. Ich vermute, dass es dort einen geschickteren und besseren Weg gibt. Ich bin mir aber im unklaren darüber in welche Richtung dieser gehen könnte und wäre über Ideen und Anregungen dankbar.

Vielen Grüßen und viele Dank.
Private Nachricht senden Benutzer-Profile anzeigen


punkNgrind
Forum-Century

Forum-Century


Beiträge: 136
Anmeldedatum: 10.03.11
Wohnort: Hamburg
Version: R2014b
     Beitrag Verfasst am: 09.08.2016, 15:30     Titel:
  Antworten mit Zitat      
Verstehe jetzt nicht genau, wo dein Problem liegt, aber du kannst auch von deinem Callback des Push-Buttons eine Funktion aufrufen.

Grundsätzlich rufe ich bei mir in Callbacks immer nur eine Funktion auf, in der ich dann die Programmierung mache. Das ermöglicht dann auch leichter weitere Funktionen auf zu rufen oder sogenannte 'Local Functions' zu verwenden.

Mittlerweile bin ich sogar dazu übergegangen - gerade bei umfangreichen GUIs halte ich das für sinnvoll - objektorientierte Programmierung zu verwenden.

Edit: Nochmal dein programmcode angeguckt, in Grunde genommen bist du doch schon auf den richtigen Wege, die Initialisierung deiner Schnittstelle ist doch eine Funktion, was hindert dich daran die Plots in eine weitere Funktion auszugliedern?
Private Nachricht senden Benutzer-Profile anzeigen
 
Axel
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 29.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.08.2016, 17:24     Titel:
  Antworten mit Zitat      
Hallo,

danke für deine Antwort. Mein Problem liegt wahrscheinlich in der unterschiedlichen Programmierung von LabView und Matlab (parallel und seriel). Ich versuche es mal an einem Beispiel zu erklären.

Ich möchte z.B. einen Push Button "Messung starten" erstellen. Dieser initialisiert dann die Messtechnik. In einem Graph werden dann die aktuellen (z.B. die letzten 100) Messwerte angezeigt. Wenn ich es wie in meinem Beispiel programmiere, werden mir aber erst nach Durchlaufen der Funktion alle (im Beispiel 5) Werte zurück gegeben. Einerseits könnte ich jetzt eine größe Schleife in die Pushbutton Funktion schreiben und jeden Wert einzeln abfragen, verarbeiten und in einen Graphen schreiben. Das widerspricht meiner Auffassung aber der Funktionsgedanken. Anderseits könnte man evtl. mit globalen Variablen oder so arbeiten. Aber wirklich sauber programmiert finde ich das auch nicht.

Ich hoffe ich konnte mich etwas verständlicher ausdrücken.
Allen ein schönes Wochende!
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 - 2024 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.