LabVIEWForum.de
Ereignisstruktur - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Ereignisstruktur (/Thread-Ereignisstruktur--2838)



Ereignisstruktur - Bil - 19.03.2010 10:03

Moin

Hab im Ereignisstruktur mehrere Unterschleifen eingebaut (For-Schlefe), dies will ich mittels der der Stopp taste wären dem Vorgang stoppen.
Mit einer While schleife hat es nicht funktioniert.

gruss

Lv86_img


Ereignisstruktur - abrissbirne - 19.03.2010 10:13

Puhh, aslo du solltest dir erstmal Gedanken über deine Architektur machen. Ehrlich gesagt habe ich bei so einem VI kaum Lust mir das durchzusehen. Das Blockdiagramm sollte eine Monitorgröße nicht übersteigen.

Edt: Beschäftige dich mit Producer-Consumer-Architekturen, Sub VI's, Zustandsautomaten um deinen Code zu vereinfachen.


Ereignisstruktur - Bil - 19.03.2010 10:18

Kannst du mir irgend welche Seiten empfehlen wo ich mir Information holen kann.(Producer-Consumer-Architekturen)


Ereignisstruktur - abrissbirne - 19.03.2010 10:27

' schrieb:Kannst du mir irgend welche Seiten empfehlen wo ich mir Information holen kann.(Producer-Consumer-Architekturen)
z.B. die SuFu hier im ForumBig Grin


Ereignisstruktur - BsaiboT - 19.03.2010 11:18

Also nachdem ich dein VI mal etwas zusammengeschrumpft habe (Wie groß ist dein Monitor? 30"?), kann ich dein Problem auch nachvollziehen.

Dein Problem besteht darin, dass der Code für "Start" in der Eventschleife ausgeführt wird und neu eintreffende Events währenddessen in einer Queue eingereiht werden. Diese neuen Events werden nun nach Beendigung des aktuell laufenden Eventcodes abgearbeitet. Das aktuelle Event wird nicht unterbrochen.

Du bist also ganz klassisch darauf gestossen, weshalb man den Code innerhalb von Eventschleifen nicht allzu groß bzw komplex gestalten sollte. In deinem Fall würde ich dir eine ganz gewöhnliche Whileschleife in Kombination mit einem Case empfehlen.

Hier dein (unverändertes) geschrumpftes VI zurück: Smile
Lv86_img
[attachment=25278]

Hier siehst du wie man beispielsweise eine solche Struktur, wie ich glaube, dass du sie benötigst aufbauen kann:
[attachment=25280]
Die Stopterminals in den For-loops kannst du mit einem Rechtsklick auf den Rand der jeweiligen Schleife einblenden lassen.
Dein Problem lässt sich mit anderen Mitteln vermutlich eleganter lösen, aber dieses war das, was mir auf die Schnelle eingefallen ist. ;-)

Prinzipiell solltest du eine Funktion erst im kleinen Testen, wenn du dir nicht 100% sicher bist, dass du genau weisst wie es abläuft. Sprich, wenn du denkst, dass eine Eventstruktur deine Aufgabe lösen kann, du aber die Funktionsweise nicht genau kennst, dann implementier nicht zuerst all deinen Code, sondern mach dir schnell ein BeispielVI und teste die Funktionalität dort im kleinen. So kannst du VIEL Zeit sparen, wenn du dann feststellst, dass es so nicht geht und du die Stundenlange verdrahtungsarbeit umsonst gemacht hast.... Big Grin

Grüße


Ereignisstruktur - Bil - 19.03.2010 11:35

Ich werde es mal so versuchen.hoffe es klappt so wie ich es haben will.
Danke für die schnelle antwort.





Arbeite mit 2 Monitoren 15zoll und 19zoll.



Gruss


Ereignisstruktur - BsaiboT - 19.03.2010 12:28

Hoppla - habe gerade gesehen, dass LV beim Snippet erstellen die lokalen Variablen in PN umgewandelt hat.... Sad

Also das ganze Reference-Gedöns brauchst du so nicht nachbauen.
[attachment=25283] sind einfach nur als lokale Variablen des Stoppschalters gedacht. Was man bei den beiden kleinen Forloops nicht mehr sieht, ist dass die Stoppvariablen dort mit dem jeweiligen Abbruchterminal der For-Loop verbunden ist.


Ereignisstruktur - Bil - 19.03.2010 12:57

ok. danke