LabVIEWForum.de - Welche Time gilt bei Timeout ?

LabVIEWForum.de

Normale Version: Welche Time gilt bei Timeout ?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.

HansWerner

Ich möchte einen bestimmten Programmteil zwecks Initialisierung zum einen beim Start des Programms und auch bei Betätigung eines Schalters ausführen. Also habe ich einen Ereignis-Case definiert und als auslösende Ereignisse sowohl Timeout mit der Konstanten 0 als auch die Wertänderung des Schalters deklariert.
Irgendwie scheint das nicht so ganz richtig zu sein. Wenn ich nun eine While-Schleife herumbastele wird immer wieder der Timeout ausgelöst. Gilt Timeout für den Start der Anwendung oder ab welchem Zeitpunkt läuft die Zeit für Timeout ?
Sehr unklare Fragestellung, da holen wir mal die Kristallkugel rausGlas1, vielleicht habe ich es richtig verstanden?

Grundgerüst ist dies hier?
[attachment=21383]

Dann mal kurz zum TimeOut-Case der Event-Structure:
1. Eine Event-Structure wartet immer solange, bis eines der definierten Ereignisse eintritt. Der entsprechende Fall wird dann ausgeführt.
2. Wenn du den TimeOut-Case verwendest und dort eine Wartezeit >= 0 anschließt, dann wartet die Event-Structure maximal soviele Millisekunden wie definiert (in deinem Fall also 0 ms), und führt dann den Code im Timeout-Case aus.

Gruß, Jens

(P.S.: Beschäftige dich mit Programmierkonzepten State-Machine und vielleicht auch Producer-Consumer, beides zu finden unter File->New... -> Templates).
' schrieb:Irgendwie scheint das nicht so ganz richtig zu sein. Wenn ich nun eine While-Schleife herumbastele wird immer wieder der Timeout ausgelöst. Gilt Timeout für den Start der Anwendung oder ab welchem Zeitpunkt läuft die Zeit für Timeout ?
Ja, ich find auch es ist unklar, aber zumindest läßt sich eines sagen:
Ein Timeout beginnt niemals automatisch ab Start der Anwendung, sondern immer ab Zeitpunkt Aufruf der Funktion, in der es einen Timeout gibt. (Wobei ich hier unter Funktion auch die Eventstruktur mit einschlie0e).
Wenn ich in einer Schleife ein Wait habe und noch irgendwelchen anderen Code, so funktioniert es so: Bei jedem neuen Schleifendurchlauf wird zuerst das Wait aufgerufen, d.h die Wartezeit beginnt sofort. Während des Wartens wird dann der andere Code in der Schleife abgearbeitet. Wenn das weniger lange dauert als das Wait, dann gilt das Wait, ansonsten dauert es eben so lange wie es braucht, durch das Wait tritt aber keine zusätzlich Verlängerung des Zyklus ein.
Beispiel: In einer Schleife habe ich - blödsinnigerweise, aber nicht falsch - zwei Waits mit T1 und T2. Die Wartezeit ist dann nicht T1 + T2, sondern es gilt die längere der beiden Zeiten.
Bei der Eventstruktur ist es aber gerade anders herum als bei einem Wait in der Schleife Timeout ist hier nicht die mindeste, sondern die höchste Wartezeit - falls eben wärend der Wartezeit kein Ereignis eintritt. Das Gleiche gilt auch bei Timeout in DAQmxRead, Warten auf Daten in Queues usw.
Referenz-URLs