LabVIEWForum.de
Timer macht was er will :-) - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Timer macht was er will :-) (/Thread-Timer-macht-was-er-will)



Timer macht was er will :-) - Natalie1984 - 03.07.2019 15:48

Hallo,

ich versuche die ganze Zeit mit allen unterschiedlichen Timern was Labview anbietet, einen Timer wie in VS zu bauen.
Folgendes muss der Timer können

Code:
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
  
     ... Anweisungen

    End Sub

       Timer1.Enabled = True

       Timer1.Start()



VG
Natalie


RE: Timer macht was er will :-) - IchSelbst - 03.07.2019 17:00

(03.07.2019 15:48 )Natalie1984 schrieb:  ich versuche die ganze Zeit mit allen unterschiedlichen Timern was Labview anbietet, einen Timer wie in VS zu bauen.
Der "Timer" wie in VB (VS?) ist ja auch objekt-orientiert. In LabVIEW muss du was Datenfluss-taugliches machen.

Du kannst den Timeout-Case einer Event-Struktur verwenden oder einen Metronom in While-Schleife mit Case-Anweisung.

Wie sehen denn deine Versuche aus? Bitte Muster VI posten, dann ist die Hilfe einfacher.


RE: Timer macht was er will :-) - jg - 03.07.2019 19:52

Hier ist eine nette Timer-API:

https://forums.ni.com/t5/Community-Documents/NEW-Timer-Session/ta-p/3529186

Gruß, Jens


RE: Timer macht was er will :-) - Natalie1984 - 04.07.2019 10:47

Hi,

ich möchte einfach einen Timer starten, in der dann eine Task in einer bestimmten Zeit ausgeführt wird.
Dieser Timer muss auch dann wieder abschaltbar sein.

Die APIs sind mir zu viel. Ich meine, für das was ich vor habe, denke ich das die einfach zu komplex sind.

Es sollte was einfaches sein.


RE: Timer macht was er will :-) - GerdW - 04.07.2019 11:26

Hallo Natalie,

Zitat:ich möchte einfach einen Timer starten, in der dann eine Task in einer bestimmten Zeit ausgeführt wird.
Im Timer soll ein "Task" "in einer bestimmten Zeit" "ausgeführt" werden?
Wie genau soll das vonstatten gehen?

Soll der Timer ein Flag nach einer gewissen Zeit setzen? Nimm ElapsedTime…
Soll der Timer dafür sorgen, dass ein anderer "Task" nur "eine bestimmte Zeitdauer lang" laufen soll? Nimm ElapsedTime und nutze dessen Ausgang als Flag für diesen "Task"…

Kannst du deine Aufgaben nochmal genauer erläutern?

Zitat:Dieser Timer muss auch dann wieder abschaltbar sein.
Dann nimm einen zweiten Button hinzu, den man (z.B.) mit Enable beschriftet und auch so benutzt…


RE: Timer macht was er will :-) - seuk - 04.07.2019 12:47

Wie Gerd schon sagt, müsstest du deine Anforderungen genauer spezifizieren.

Schau dir mal das Rubber Duck Debugging an. Algorithmen zu programmieren, die man sprachlich nicht ausdrücken kann ist sehr schwierig. Je genauer du formulieren kannst, was wie geschehen soll, desto eher kannst du es auch selbst umsetzen.

Musst du Code/ein VI alle x ms ausführen und diese wiederholte Ausführung starten und stoppen können? Dann wäre folgendes Beispiel, wie man das Timeout Event zum Timing nutzen kann, evtl. etwas für dich. Der ON-Button startet die wiederholte Ausführung des Timeout Cases, der Off-Button beendet diese wieder.
[attachment=60162]


RE: Timer macht was er will :-) - IchSelbst - 04.07.2019 12:49

Hallo Natalie

Du muss dich mal lösen von den Programmiermethoden, wie sie in VB verwendet werden. In VB hast du vorgefertigte Objekte, eines davon ist ein Timer. Dieser Timer macht zyklisch einen asynchronen Interrupt (das ist der "Tick") in deine Applikation. Das schöne an den vorgefertigten Objekten ist, dass man als Programmierer fast keinen Aufwand hat: Komponente platzieren; Doppelklick -> "Tick"-Funktion generieren; Algorithmus für Tick schreiben; Timer enablen - fertig.

In LabVIEW geht das nicht. Besonders die Sache mit dem asynchronen Interrupt gibt es mit Standardmitteln in LabVIEW nicht. Am nähesten an dein VB-Verfahren käme eine Windows-System-.NET-DLL-Timerfunktion mit einem Callback, so wie du ihn mit deinem YMTCP gemacht hast - das ist aber nicht Sinn und Zweck unter LabVIEW.

Das nächste, was in LabVIEW nicht geht, ist, dass du wahlfrei auf irgendwelche Variablen schreiben kannst. In LabVIEW gibt es nämlich solche Variablen (eigentlich) nicht.

In LabVIEW machst du folgendes:
Nimm eine While-Schleife, platziere eine Event-Struktur hinein und stell den Timeout der Event-Struktur auf den Wert deines Ticks. In den Timeout-Case schreibst du deinen Tick-Algorithmus. Enablen und disabeln kannst die diesen Timer, indem du den Algorithmus im Timeout-Case in eine IF-Sequenz legst, die du von außen steuern kannst.

Nachtrag:
Seuk hat dir mal ein Muster gemacht.