LabVIEWForum.de - case Bedingung von externer Schleife steuern?

LabVIEWForum.de

Normale Version: case Bedingung von externer Schleife steuern?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich habe eine RS232 über die auch etwas gesendet werden soll, diese Übermittlung muss ich per "Senden"-Button, abschließen. Ich muss nun auch ohne Drücken des Senden Buttons etwas abschicken können, konkret möchte ich einen Timer in einer externen While-Schleife laufen lassen und wenn der fertig mit Runderzählen ist, soll er ein Kommando über die RS232 Schnittstelle versenden.

Wie stellt man sowas am geschicktesten an? Habe mal die Ursprungs- vi aus 8.6 angehangen, zu der oben erwähnten Steuerung habe ich noch nichts gemacht.

Ich dachte man definiert eine lokale Variable und ändert die mit Boolean, wenn der Timer fertig ist. Und bei den Case-Ereignissen (Ereignisse dieses Cases bearbeiten) gibt man zusätzlich an das die Case-Schleife ausgeführt wird wenn eine Wertänderung stattgefunden hat.

Geht sowas?

Danke MfG jojo
Eine weitere Möglichkeit wäre ein dynamisches Event.


Gruß Markus
das sieht ziemlich kompliziert aus, werde mal versuchen durchzusteigen.

Danke erstmal.

mfg jojo
.... ist es aber nicht. Big Grin
Das einige was Du beachten musst, ist dass Du der Konstante am "User Event Data Type"-Anschluss ein Label mit Name (in dem Fall "Trigger") verpassen musst.
Außerdem muss Du einen Rechtsklick auf Deine Event-Struktur machen und "Show Dynamic Event Terminals" auswählen, damit Du das Event registrieren kannst.

[attachment=20542]

Gruß Markus

EDIT: Hier nochmal das VI. Leider kann ich es mit LabVIEW 2009 nicht weiter als LabVIEW 8.6 herunterkonvertieren, weil mir LabVIEW dann gnadenlos abschmiert, ohne irgendwas zu sichern. Kann das jemand mit LabVIEW 2009 bestätigen?

[attachment=20543]
Lv86_img

' schrieb:das sieht ziemlich kompliziert aus, werde mal versuchen durchzusteigen.

Danke erstmal.

mfg jojo
Offtopic2
' schrieb:EDIT: Hier nochmal das VI. Leider kann ich es mit LabVIEW 2009 nicht weiter als LabVIEW 8.6 herunterkonvertieren, weil mir LabVIEW dann gandenlos abschmiert, ohne irgendwas zu sichern. Kann das jemand mit LabVIEW 2009 bestätigen?
Bestätigt! Leider...
Fehler MemoryManager.cpp, line 547.

Habe es auch mit ein paar anderen VIs probiert.

Bisheriger (erster) Status: Sobald ich eine Event-Struktur im Blockdiagramm habe und "Save for previous" mit LV-Version <=8.5 versuche, steigt LV 2009 aus. Übel. Da mache ich gleich mal einen Thread im Bug-Forum auf.

Gruß, Jens
also so richtig klappt es mit dem dynamischen event bei mir nicht, ich habe es ehrlich gesagt auch noch nicht so richtig verstanden. Ich bin deshalb bei meiner ersten variante geblieben, komme damit aber auch nicht weiter. deshalb habe ich mal ein abgespecktes vi hochgeladen. Konkret geht es mir um folgendes problem: wenn ich die verbindung über die serielle schnittstelle hergestellt habe, kann ich als eine option von mehreren einen Kalibrierheizer über einen boolschen Kippschalter zu schalten, die Dauer dieser Zuschaltung läßt sich mit einen numerischen Eingabeelement einstellen, danach soll das Gerät selbstständig wieder abschalten. Zum Anschalten wird das Kommando KH01<CR><CR> und zum Ausschalten KH00<CR><CR> über die serielle Schnittstelle ausgegeben.

Ich habe diese Prozedur in einer extra While-Schleife implementiert, der "Senden" Zustand läuft in einer Case-Prozedur, die nur aufgerufen wird wenn sich der Wert vom Button Senden ändert, ich habe dieser Case-Schleife nun ein neues Ereignis zugefügt, das sie auch laufen soll wenn sich die Variable Kalibrierheizer ändert.

Aber wahrscheinlich wird die Case-Schleife doch nicht ausgeführt, woran könnte das liegen.

Ich benutze LabVIEW 8.6.

Danke MfG jojo
Referenz-URLs