LabVIEWForum.de - Abbrechen der Datenerfassung mit Triggerung

LabVIEWForum.de

Normale Version: Abbrechen der Datenerfassung mit Triggerung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo

Wenn man eine Datenerfassung mit einem externen Trigger startet (über Sample Clock des DAQmx Timing Modules), steht das komplette Programm still und wartet auf den Trigger.

Hat man eine Möglichkeit dieses Warten abzubrechen? Wenn man Steuerelemente auf der Oberfläche anklickt, wird dieses Ereignis gespeichert und behandelt, sobald die Datenerfassung vorbei ist. Ich möchte jedoch per Button die Messung unterbrechen können...
Was wartet, ist ja nicht das DAQmx Trigger Vi, sondern das DAQmx Lesen VI, und auch das nicht unendlich lange, sondern nur bis zum voreingestellten Timeout. Danach bricht das VI mit einer Fehlermeldung ab. Mit einer entsprechenden Fehlerbehandlung hast Du dann doch alles im Griff: Entweder hast vorher den Abbruchknopf schon gedrückt und beendest die While-Schleife, in der sich das Lesen-VI sinnvollerweise befinden sollte, oder die Schleife wird nicht abgebrochen, was einen neuen Leseversuch bis zum nächsten Timeout zur Folge hat.
Ist schon klar, dass das Read-VI wartet und nicht das Trigger-VI. Meine Anwendung macht es aber erforderlich, dass ich einen Time-Out von 5 Minuten und mehr einstellen muss. Wenn dann der Benutzer das Programm abbrechen will und erst 5 Minuten warten muss, bis der Time-Out abgelaufen ist, ist das ja nicht gerade sehr nutzerfreundlich... Deswegen such ich eine Möglichkeit, den Time-Out zu umgehen und das Warten einfach so abzubrechen. Gibt es da keine Funktion, die alle aktiven Tasks abbricht - oder so ähnlich...Smile
' schrieb:Gibt es da keine Funktion, die alle aktiven Tasks abbricht - oder so ähnlich...Smile
Oh je, da fällt mir nur noch die STOP-Funktion ein, die dem roten Knopf in der Menüleiste entspricht. Durch geschicktes Verlagerung die Datenerfassung in ein Sub-Vi könnte man erreichen, daß nur dieses VI, nicht aber die gesamte Anwendung, abgebrochen wird. In diesem VI müßtest Du natürlich eine unabhängige Schleife laufen haben, die den Abbruch-Schalter abfragt.

Edit: Unter der Dusche fiel mir die Lösung ein, ich laß das oben aber stehen. Wenn das DAQ Lesen wartet, steckst Du in der Falle und kommst nicht wieder heraus, Du mußt vorher in einer Schleife den Status laufend abfragen, ob sich das Lesen lohnt, d.h. ob die gewünschte Anzahl Daten im Buffer sind, damit ohne Wartezeit gelesen werden kann. In dieser Schleife ist auch der Abbruchknopf drin. Den Status fragst Du ab mit Eigenschaftsknoten DAQmxLesen/VerfügbSamplesProKanal

Um Deine Frage "Kann man das Warten abbrechen?" zu beantworten: Nein, aber man kann dafür sorgen, daß man in diese Falle gar nicht erst hineintappt.
Referenz-URLs