LabVIEWForum.de - Verständisproblem Ereignisstrukur

LabVIEWForum.de

Normale Version: Verständisproblem Ereignisstrukur
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo LabVIEW User,
ich habe anscheinend ein kleines Problem bei der Anwendung der Ereignisstruktur.

Ich möchte eine GUI für eine Motorensteuerung schreiben. (bzw. sie existiert schon...funktioniert aber eben nicht..)
Dafür habe ich mehrere Controls mit denen ich verschiedene Parameter (Motorauswahl, Geschwindigkeit, Beschleunigung usw.) ändern kann.

Jetzt soll sofort nach Änderung der Werte die neue Konfiguration als string per TCP/IP an meine Motoren "geschickt" werden.

Ich dachte mir, das beste ist, ich trenne diese beiden Komplexe und arbeite mit 2 seperaten Schleifen.

1e Eingabeschleife, in der eine Ereignisstruktur sitzt, die nach Änderung eines Parameters nur diesen Parameter vom jeweiligen Control ausließt und in einen "Zwischenstring" schreibt.

In der 2ten Schleife ("Kommunikatioonsschleife") befindet sich die TCP/IP-Kommunikation in einer weiteren Ereignisstruktur.
D.h. sobald sich der Wert von "Zwischenstring" ändert müsste eigentlich diese 2te Schleife arbeiten und den String über TCP/IP versenden.
Macht sie aber nicht.....

Ich habe ein kleines Minimalbeispiel gemacht um den Denkfehler einzugrenzen:

Was dieses Programm machen müsste, (aber nicht tut) ist folgendes:

Bei Änderung des Wertes A (durch den Schieber) oder B (durch das Eingabefeld)
wird der unsigned inter (U16) in einen String konvertiert.

Bei Änderung des String-wertes müsste die Ereignisstruktur der "Kommunikationsschleife"
sofort den neuen Wert in das Ausgabefeld schreiben.


..leider reagiert die "Kommunikationsschleife" garnicht.

Wo ist mein Denkfehler???

Ich verwende LabVIEW 8.6.1f1
verwende anstelle der Lokalen Variable auf den "Zwischenstring" einen Eigenschaftsknoten mit der Eigenschaft "Wert signalisierend".

LG
Torsten
Hey super!!!
Das klappt!!

...aber warum funktioniert das nicht wenn ich nur die lokale Variable überschreibe?
Dabei ändere ich doch auch den Wert.....
Die Ereignisstruktur reagiert eben nicht auf "programmatische" Änderungen sondern eher auf Benutzeraktionen (Eingaben auf der Oberfläche). Wenn sie doch reagieren soll, musst du den besagten Eigenschaftsknoten verwenden, der gleichzeitig das Ereignis auslöst.

LG
Torsten
' schrieb:Ich habe ein kleines Minimalbeispiel gemacht um den Denkfehler einzugrenzen:
Dafür schon mal vorab ein dickes Lob. Das sollte eigentlich immer so sein, aber leider ist das eher die seltene Ausnahme als die Regel.
Das VI enthät auch einen weiteren Fehle: Wenn Timeout in den Cases unendlich ist, dann werden Wertänderungen des Stop-Knopfes nicht bemerkt. Stop sollte auch en Ereignis sein.
Eine der beiden Ereignisstrukturen ist unnötig. Das Ereignis "String-Wertänderung" (mit Eigenschaft "Wert-Signalisiernd") kännte auch in einem anderen Ereigniscase der ersten Ereignisstruktur behandelt werden, dazu brauicht es keine zweite Ereignisstruktur.
Ich bin aber jetzt gleich mal noch einen Schritt weitergegangenund zeige Dir, wie man die drei Ereigniscases in einem einzigen Case behandeln kann.
[attachment=22007]
Lv86_img[attachment=22008]
Referenz-URLs