Servus,
hab schon wieder ein LV8 Problem.
Ich hab in einer Subroutine eine While-Schleife welche auf 200 Ereignisse wartet. Wie kann ich diese Subroutine nach einer bestimmten Zeit abbrechen wenn die 200 Ereignisse nicht auftreten. Das SubVI soll nach einer bestimmten Zeit abgebrochen werden und ins Hauptprogramm zurückkehren.
Wie gehe ich soetwas am besten an. Dank euch mal.
Gruß
bua
Schliesse an die Abbruchbedingung einen ODER, an den ODER machst du zwei Anschlüsse eins der nach Timeout TRUE wird und ein, der nach 200 Ereignissen TRUE wird.
Gruss
Hallo eugen graf,
wie muss ich das mit dem timeout machen? Bei mir bleibt das LabVIEW dann immer länger in der While Schleife.
gruß bua
Für den Timeout gibts mehrere möglichkeiten: Eine wäre z.B.:
Du liest den Zeitstempel bevor du die Schleife startetst und addierst deine maximale Wartezeit dazu. In der Schliefe liest du immer wieder den aktuellen Zeitstempel und vergleichst diesen mit dem außerhalb der Schleife berechneten. Wenn der neue Zeitstempel größer wird als der berechnete, so ist die Zeit abgelaufen und du kannst die While-Schleife beenden.
Grüße, Florian
Richtig, oder so:
Du hast bestimmt eine Wartezeit in der Whileschleife (z.B. 20 ms). Wenn du einen Timeout ungefähr von einer Minute haben willst, dann vergleiche die Iterationen der Whileschleife mit 3000.
Warum 3000? ganz einfach:
Angenommen eine Iteration dauert 20 ms, dann ist nach 3000 Iterationen eine Minute verlaufen.
Gruss, Eugen
Danke Eugen und Andreas,
normalerwise müßte es so funktionieren, aber leider bei mir nicht.
Wie beschreib ich es am besten? Ich warte in der whileschleife auf Daten von der Seriellen Schnittstelle, leider bekomme ich nicht immer Daten. Das heißt für mich wenn ich keine Daten mehr bekomme möchte ich abbrechen. Genau hier setzt mein Problem an, LV wartet so lang an dieser Stelle bis die Daten tatsächlich da sind. Wenn ich einen Schritt vorher den Zeitstempel abrufe dann ist noch alles ok aber nachdem LV dann auf weitere Daten wartet steht das ganze Programm uind ich habe keine möglichkeit mehr den Zeitstempel zu vergleichen.
Gruß
bua
Hallo bua,
mit der Funktion "Bytes at Port" kannst Du abfragen ob bzw. wieviele Daten an der Schnittstelle anliegen, ohne dass das SubVI "stehen bleibt".
Gruß,
Marko