LabVIEWForum.de
Benutzer Event auslösen ? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Benutzer Event auslösen ? (/Thread-Benutzer-Event-ausloesen)



Benutzer Event auslösen ? - Niko1912 - 22.11.2018 13:55

Guten Tag,

ich habe zwei Schleifen Parallel am laufen. Die eine kümmert sich nur um das Menü, in der anderen geschieht eine Datenausgabe.
Normalerweise beendet der Benutzer die Ausgabe über das Menü, wenn nun ein Fehler auftritt soll die Datenausgabe ebenfalls beendet werden.
Leider klappt das nicht so wie ich mir das Vorstelle. Habe schon versucht mit einem zweiten Eventcase den Zustand einzunehmen, dann fängt das Menü aber an zu flackern.( Die Schleife steht dann auch nicht mehr und wartet auf eine Eingabe, sondern fragt zyklisch ab.)
Ebenfalls versucht habe ich es mit einem dynamischen Event, hat leider auch nicht geklappt (Könnte auch an meinen Fähigkeiten liegen).

Ich hab ein beispiel VI hochgeladen, hoffe dies erklärt die Problematik.

[attachment=59581][attachment=59582] Lv09_img2

Ich bin sicher mir kann geholfen werden.


Viele Grüße

Niko


RE: Benutzer Event auslösen ? - GerdW - 22.11.2018 14:21

Hallo Niko,

THINK DATAFLOW!
Deine "Datenausgabe"-Schleife startet erst, wenn deine Statemachine davor beendet wurde. Wie willst du also dafür sorgen, dass beide Schleifne parallel laufen und du überhaupt die Möglichkeit bekommst, aus der Statemachine heraus die DAQ-Schleife zu beenden?


RE: Benutzer Event auslösen ? - Niko1912 - 22.11.2018 14:35

Hallo Gerd,

das Beispiel ist vielleicht nicht zu 100% aussagekräftig, normalerweise ist es so das ein zusätzlicher State ("Ausgabe starten"), ein Case in der zweiten Schleife auf true setzt. Dieser true-Case macht dann die Datenausgabe. Im Beispiel soll der State "Please" diesen Case auf false setzten und zusätzlich ein Hardware reset machen. (Damit die Spannungen auf 0V sind).

Beide Schleifen laufen bis das gesamte Programm beendet wird, es soll also möglich sein eine Datenausgabe mehrmals zu starten und zu stoppen.

Der Übergang von Ausgabe zum Stopp ist mit einer Semaphore gesichert, damit nicht beide Schleifen gleichzeitig die Hardware beschreiben.

Eigentlich will ich nur das Benutzer-event in der Statemachine auslösen damit ich in den case "please" komme, ohne dass im Menü anzuklicken.


RE: Benutzer Event auslösen ? - GerdW - 22.11.2018 14:49

Hallo Niko,

Zitat:Eigentlich will ich nur das Benutzer-event in der Statemachine auslösen damit ich in den case "please" komme, ohne dass im Menü anzuklicken.
Welches "Benutzer-Event"? Es gibt dort nur ein "Menüauswahl"-Event!
Wie/wann willst du dieses Event auslösen?

1. Wenn du ein benutzerdefiniertes Event haben willst, dann musst du erst einmal eines anlegen.
2. Wenn du einen State in deiner Statemachine aufrufen willst, kannst du das prinzipiell auzf verschiedene Arten tun. Füge doch einfach eine weitere Möglichkeit, z.B. einen Button oder einen Timer-gesteuerten Ablauf hinzu…


RE: Benutzer Event auslösen ? - Niko1912 - 22.11.2018 15:17

Ich meine natürlich das "Menüauswahl"-Event, mit einem Button habe ich es probiert. Ich habe ein zusätzliches Event (Value Change) eingefügt und im Fehlerfall den Butten auf True gesetzt mit dem Eigenschaftsknoten Wert(Signalisierend). Hat auch geklappt, aber das Menü fing dann an zu flackern.

Ich will also das "Menüauswahl"-Event auslösen um in den State "Please" zu gelangen.
Ich glaube dies wird aber so nicht möglich sein, oder irre ich mich ?

Habe jetzt das Problem umgangen indem ich den Ausgabe-Case auf False setzte und den Benutzer darauf hinweise das er die Ausgabe stoppen muss um die Hardware zu resetten.


Danke für die Hilfe, wenn es einen besseren Lösungsansatz gibt werde ich diesen gerne testen.


RE: Benutzer Event auslösen ? - GerdW - 22.11.2018 15:27

Hallo Niko,

Zitat:Ich will also das "Menüauswahl"-Event auslösen um in den State "Please" zu gelangen.
1. Das "Menüauswahl"-Event kann nur der Benutzer selbst auslösen, indem er eben ein Menüitem auswählt.
2. Wieso soll das der einzige Weg sein, um den State "Please" aufzurufen? Warum siehst du nicht einfach einen zweiten regulären Weg dahin vor?

Zitat:Ich habe ein zusätzliches Event (Value Change) eingefügt und im Fehlerfall den Butten auf True gesetzt mit dem Eigenschaftsknoten Wert(Signalisierend). Hat auch geklappt, aber das Menü fing dann an zu flackern.
Wieso flackert dann das Menü?


RE: Benutzer Event auslösen ? - Niko1912 - 22.11.2018 15:54

Hallo Gerd,

Zitat:2. Wieso soll das der einzige Weg sein, um den State "Please" aufzurufen? Warum siehst du nicht einfach einen zweiten regulären Weg dahin vor?

Mit einem zweiten weg meinst du ein zweiten Event-Case? Das war ja mein Versuch mit dem "Button Value change", beziehungsweise hatte ich zwischenzeitlich auch versucht mit einem dynamischen Event.

Meine Beobachtung war, dass die Schleife nicht mehr steht und auf das Event wartet, sondern weiter läuft. Der State Leerlauf wird(wenn mehrere Events vorhanden sind) zyklisch ausgeführt, bei einer Datenausgabe wird die Frequenz höher.
Als Bsp. ohne Datenausgabe 5 mal die Sek. mit Datenausgabe 20 mal die Sek. Warum das so ist hab ich auch noch nicht begriffen, die Schleifen synchronisieren sich anscheinend an einer Stelle.
Dadurch entsteht das Flackern, liegt wahrscheinlich daran das bei einer Datenausgabe das Menü-Feld "Starten" ausgegraut wird.( Dies passiert im Leerlauf State vor dem "Menüauswahl"-Event).


RE: Benutzer Event auslösen ? - GerdW - 22.11.2018 16:35

Hallo Niko,

Zitat:Warum das so ist hab ich auch noch nicht begriffen, die Schleifen synchronisieren sich anscheinend an einer Stelle.
Leider kann man hier nicht (mehr) weiterhelfen, da du deine VIs hier nicht bereitstellst…