Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
ich möchte gerne, daß eine Schleife, in der die Schleifendauer zufällig erzeugt wird, nach einer festgelegten Zeit abgebrochen wird.
(z.B. siehe Bild) So kann es natürlich nicht funktionieren, da die innere Schleife zuerst beendet werden muß, damit die neue Zeiterfassung stattfinden kann.
D.h. wenn ich z.B. die Zeitdauer auf 3s stelle, die Zufallsdauer der inneren Schleife jedoch 8s beträgt, sollte die Schleife nach 3s beendet werden.
Die Suche nach Zeitschleifen, inneinander verschachtelte Zeitschleifen etc. brachten leider kein Erfolg.
Danke.
Zitat:D.h. wenn ich z.B. die Zeitdauer auf 3s stelle, die Zufallsdauer der inneren Schleife jedoch 8s beträgt, sollte die Schleife nach 3s beendet werden.
Möglichkeiten:
- bei der inneren Schleife eine Min/Max-Funktion verwenden, um die Zufallszeit auf einen Maximalwert (=deine "äußere" Schleifendauer") zu begrenzen
- die Dauer der inneren Schleife gleich mit der richtigen Zahl berechnen, d.h. nicht stupide mit 10000 multiplizieren, sondern mit der "äußeren" Schleifendauer
- beide Schleifen zu einer zusammenfassen und zwei Abbruchbedingungen auswerten: "IF Zeit1 abgelaufen ODER Zeit2 abgelaufen THEN ..."
- Es gibt ein ExpressVI "ElapsedTime", das man hier verwenden könnte (das ich mal ExpressVIs empfehlen würde... )
Danke für die Lösungsvorschläge.
Doch so richtig geeignet sind sie für mein Vorhaben doch nicht.
Sorry, dazu sollte ich es etwas genauer beschreiben.
Ich habe vor, eine Lampe (über DMX) zu steuern.
Dazu möchte ich u.a. folgende Eingaben machen:
z.B. Fahre ein Random-Programm für exakt 8s ab, in dem die Lampe (ebenfalls mit Random-Helligkeitswerten) mit Zeitzufallswerten leuchtet.
D.h. wenn die Zeitzufallswerte z.B. 2s dann 5s und dann 3s betragen, würde in der letzen Schleifenwiederholung (3s) die gewünschte Gesamtzeit überschritten,
da in der letzten Schleifenwiederholung der Prozeß 3s lang (mit einem ebenfalls Zufallshelligkeitswert) wartet ehe er die neue Zeit erfassen kann.
D.h. er würde die Gesamtdauer um 2s überschreiten ehe er abbricht.
Um dies zu verhindern müsste die Gesamtzeitabfrage irgendwie im Hintergrund ablaufen und bei Eintreten des Endes der gewünschten Gesamtzeit die Schleife mit den Zufallswerten
beenden.
m.f.G.
Erik
(28.10.2013 14:23 )Erik01 schrieb: Um dies zu verhindern müsste die Gesamtzeitabfrage irgendwie im Hintergrund ablaufen und bei Eintreten des Endes der gewünschten Gesamtzeit die Schleife mit den Zufallswerten
beenden.
Hallo Eric,
hierzu nochmal mein Vorschlag von vorhin.
Wenn deine letzte Wartezeit läuft, ist es egal, wie groß sie ist. Du kannst eine wait-Funktion nicht abbrechen!. Also mache aus der Wartezeit von 3s eine Whileschleife mit einer kleineren Wartezeit von z.B. 10ms, die nach 3s oder Stop abbricht. Die Warteunschärfe beträgt dann allerdings immernoch 10ms (die du auch nicht abbrechen kannst)
Gruß, marko
28.10.2013, 17:24 (Dieser Beitrag wurde zuletzt bearbeitet: 28.10.2013 22:43 von Lucki.)
Der vollkommenste Zufall ist der radioaktive Zerfall (Klicken wie beim Geigerzähler). Dafür hatte ich mal ein kleines VI gemacht. Vielleicht kannst Du damit was anfangen.
Gemacht, siehe oben. Es ist natürlich nicht ganz echt wegen des endlichen dt. In der Natur gibt es kein dt für den Mindestabstand für zwei aufeinanderfolgende Ereignisse, d.h. dort ist dt-->0.