EventCase blockiert FP - aber welcher? - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenkommunikation (/Forum-Datenkommunikation) +---- Thema: EventCase blockiert FP - aber welcher? (/Thread-EventCase-blockiert-FP-aber-welcher) Seiten: 1 2 |
EventCase blockiert FP - aber welcher? - Soean - 23.05.2012 11:29 Hallo zusammen, ich bin bestimmt nicht der Erste mit diesem Problem, aber die Suchfunktion bringt mich nicht weiter. Ich habe ein _MAIN-vi mit einer Main-Loop und 5 dazu parallelen Schleifen (DIO-Signalerfassung/Erzeugung, RS232-Kommunikationen...). In meiner Main-Loop gibt es eine State-Machine, in einem Case dieser State-Machine eine Event-Structure mit derzeit 25 Cases. Einer dieser Cases wird von 2 bool'schen Schaltern, welche in einer der parallelen Schleifen über die Property Value(Signaling) gesetzt werden, ausgelöst. Das Funktioniert auch. Die Main-State-Machine springt, sobald einer dieser Schalter gesetzt wurde, in den nächsten Case, die State-Machine wird nicht mehr aufgerufen. Trotzdem bleibt von diesem Zeitpunkt an mein FP gesperrt. Dies bedeutet doch, dass irgendwo noch ein Bedienelement, welches auf die Event-Structure registriert wurde, seinen Wert ändert und dementsprechend ein Event auslöst, welches nicht verarbeitet werden kann, weil die Event-Structure nicht mehr aufgerufen wird, oder? Leider kann ich keinen Punkt im Programmablauf finden, bei dem noch ein Bedienelemt verändert wird, erst recht nicht über value(signl). Kann es noch eine andere Ursache geben? Wie würdet ihr vorgehen, um den Fehler weiter einzugrenzen? Highlight-Mode usw. fallen raus, da ich das Programm nur als Applikation auf dem Rechner testen kann, an dem die Peripherie angeschlossen ist, und auf welchem kein LabView installiert ist. Vielen Dank für eure Hilfe!! RE: EventCase blockiert FP - aber welcher? - GerdW - 23.05.2012 11:47 Hallo Soean, Zitat:in einem Case dieser State-Machine eine Event-Structure mit derzeit 25 Cases.Zwei Punkte: - Wenn das FP nicht auf Eingaben reagiert, ist ein Event noch nicht abgearbeitet. Dies ist nämlich die Standardeinstellung bei der Eventstruktur. - Es ist m.M.n. äußerst schlechtes Design, die Eventstruktur in einem Case einer Statemachine zu verstecken... Wenn man Events für sich reklamiert, sollte man sie auch (jederzeit) abarbeiten können! RE: EventCase blockiert FP - aber welcher? - Soean - 23.05.2012 12:24 Nachdem folgendes Event aufgerufen wurde, reagiert das FP nicht mehr. (siehe Grafik) Wie dort zu sehen ist, wechselt die State-Machine nach Abarbeiten des Events den Case. Das passiert auch. Das FP bleibt jedoch gesperrt. Wie soll ich weiter vorgehen? RE: EventCase blockiert FP - aber welcher? - Lucki - 23.05.2012 12:35 Es gibt diese zwei Möglichkeiten: Entweder eine parallele Schleife nur zur Ereignisbehandlung - dann kann/soll Timout unendlich sein (-1). Oder Ereignsistruktur in der Hauptschleife. Dann kein Timeout von unendlich, sonst blockiert die Struktur! RE: EventCase blockiert FP - aber welcher? - Soean - 23.05.2012 13:22 Ich habe den Timeout auf 100 ms gesetzt - das FP bleibt blockiert. RE: EventCase blockiert FP - aber welcher? - Lucki - 23.05.2012 13:37 Es ist doch leicht feszustellen, wo es hängt. In den Ereigniscases sollte es nichts geben, was wartet. Bei Dir sieht man so komische Sachen wie das Ikon mit der Uhr, oder den Text "Auf Heizpatrone warten". Vielleicht hat sie sich verlaufen und kommt überhaupt nicht... RE: EventCase blockiert FP - aber welcher? - Soean - 23.05.2012 13:48 nene...Die HP (HeizPatrone) lege ich in dem Fall selbst in den Prüfautomaten. Dieser fängt darauf hin auch wie gewollt automatisch an zu prüfen. Die Main-State-Machine verlässt also den "Idle"-Case mit der Event-Structure und geht über den Case "Automatic-Start" in den Case "Automatic-Run". Nur das FP bleibt blockiert. RE: EventCase blockiert FP - aber welcher? - jg - 23.05.2012 13:52 Wie GerdW schon gesagt hat, eindeutig schlechter Programmierstil. Eine Eventstruktur in einen Case einer State-Machine zu stecken, der dann nicht regelmäßig aufgerufen wird, da muss so was passieren. Also: Eventstruktur in eine eigene "GUI-Loop" stecken, und dann die State-Machine per Queue oder Notifier steuern! Gruß, Jen RE: EventCase blockiert FP - aber welcher? - Soean - 23.05.2012 14:02 Hmm...diesen "schlechten Programmierstil" habe ich auch in früheren Programmen angewandt - hat einwandfrei funktioniert. Aber ok. Die Event-Structure in eine eigene Loop. Da stoße ich als Autodidakt jedoch gerade an meine Grenzen. Wie arbeite ich am Besten in verschiedenen Schleifen mit ein und der selben Klasse? Aber das ist vllt auch "Off-Topic"... Danke für eure Hilfe! RE: EventCase blockiert FP - aber welcher? - jg - 23.05.2012 14:11 Alternativ musst du halt dafür sorgen, dass der "Idle"-Case immer wieder aufgerufen wird, so dass auch wirklich Events abgearbeitet werden! Andere Idee, wie sieht es mit dem Schaltverhalten deiner "Booleans" aus. Nicht dass die 2 Events pro "Value-Signaling" auslösen. Ich kann mich da an einen Fehler bei Farbfeldern erinnern, die lös(t)en pro Benutzeränderung 2x das Event Value-Change aus. Gruß, Jens |