LabVIEWForum.de
Event-Handling für File Control - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Event-Handling für File Control (/Thread-Event-Handling-fuer-File-Control)

Seiten: 1 2


Event-Handling für File Control - Kvasir - 22.02.2007 12:16

Habs mir angesehen.
Verstehe schon was du meinst, aber bleibt immer noch die Frage nach einem sauberen Ansatz.

Wie willst du das anders lösen?
Klar könnte man das Event in eine parallele Schleife legen und den Timeout weglassen. Aber: Dann musst du erst wieder die Daten aus der Eventschleife in deinen Hauptteil schicken.
Unsyncronisiert über lokale Variablen gefällt mir noch weniger und wenn du z.B. einen Melder nimmst, dann hast du das Timeout wiederum drinnen. Nur diesmal beim Melder.
Ich sehe irgendwie keinen Weg dieses Timeout zu umgehen.

Wie gesagt verwende ich normalerweise noch eine CaseStruktur, dass das Programm nicht im Timeoutcase liegt. Im Event ändere ich dann nur den Case. Der Timeout bleibt einfach leer.


Event-Handling für File Control - oli2007 - 23.02.2007 11:37

' schrieb:@Oli:
Weniger CPU Last verursacht das nicht. Aber du kannst nun halt auf Events zugreifen. Wie Eugen aber schon schrieb, eine Case Struktur tut es in deinem Fall vermutlich auch.

OK, so langsam versteh ich das Eventhandling in LabVIEW ein bisschen besser... Ich seh aber auch ein, dass wirklich eine Case Struktur gereicht hätte. Trotzdem nochmals meine Frage: in der Doku zu den Event Strukturen steht ja überall dass man eine Event Struktur in eine While Struktur packen soll um das unabsichtliche Einfrieren des Panels zu verhindern. Leider versteh ich die Erklärungen dazu aber nicht wirklich: Wann wird das Event nicht zu Ende abgearbeitet, so dass das Panel einfriert? Und noch eine Verständnisfrage: Eventstrukturen sparen generell nur dann CPU-Zeit, wenn man sie *ohne* timeout betreibt, oder?
Vielen Dank für eure Mühe...

Grüße
Oli


Event-Handling für File Control - eg - 23.02.2007 11:45

' schrieb:OK, so langsam versteh ich das Eventhandling in LabVIEW ein bisschen besser... Ich seh aber auch ein, dass wirklich eine Case Struktur gereicht hätte. Trotzdem nochmals meine Frage: in der Doku zu den Event Strukturen steht ja überall dass man eine Event Struktur in eine While Struktur packen soll um das unabsichtliche Einfrieren des Panels zu verhindern. Leider versteh ich die Erklärungen dazu aber nicht wirklich: Wann wird das Event nicht zu Ende abgearbeitet, so dass das Panel einfriert? Und noch eine Verständnisfrage: Eventstrukturen sparen generell nur dann CPU-Zeit, wenn man sie *ohne* timeout betreibt, oder?
Vielen Dank für eure Mühe...

Grüße
Oli


Ich verstehe es umgekehrt:
wenn du eine While-Schleife in ein Event machst, dann friert dein FP ein, weil gerade dieser Event abgearbeitet wird und keine neuen Events registriert werden können.

Zum zweiten:
Eine Event Struktur schont die CPU während keine Events eintreten. Timeout-Event ist genauso ein Event wie alle anderen, mit der Vorgabe des Timeouts sagst du wie oft das Timeout-Event kommen soll im Falle wenn keine anderen Events auftreten. Hoffentlich verständlich.

Gruss, Eugen


Event-Handling für File Control - oli2007 - 23.02.2007 13:23

' schrieb:Ich verstehe es umgekehrt:
wenn du eine While-Schleife in ein Event machst, dann friert dein FP ein, weil gerade dieser Event abgearbeitet wird und keine neuen Events registriert werden können.

Zum zweiten:
Eine Event Struktur schont die CPU während keine Events eintreten. Timeout-Event ist genauso ein Event wie alle anderen, mit der Vorgabe des Timeouts sagst du wie oft das Timeout-Event kommen soll im Falle wenn keine anderen Events auftreten. Hoffentlich verständlich.

Bei Punkt zwei sind wir uns einig, das hab ich also richtig verstanden.

Zum ersten: In der NI Dokumentation steht mehrfach, dass man Event Strukturen in eine Whileschleife einbauen soll, damit alle Events abgearbeitet werden können, und aus irgendeinem Grund könne sonst das FP einfrieren (das ist genau das, was ich nicht verstehe). Dass das FP eingefroren bleibt, wenn das Event nicht mehr zu Ende geführt wird (wegen einer Endlosschleife) ist schon klar. Aber wenn das passiert hat man doch sowieso Schrott programmiert?!


Event-Handling für File Control - Kvasir - 23.02.2007 13:59

Naja wenn du dein Event einfach in die Pampa stellst (sprich in das BD ohne Schleife), dann wird es nur einmal abgefragt. Die Eventstruktur kann nur ein Event erfassen, auch wenn du viele ausgewählt hast.

Stellst du hingegen die Struktur in eine While Schleife, so wird das Event jedes mal erneut aufgerufen und kann ständig reagieren. Das geht natürlich auch ohne Timeout. Das Event wartet dann ewig (Abbruch Ereignis nicht vergessen!), arbeitet ein eventuelles Ereignis ab, und wartet dann auf ein neues.

Außerdem ist die Dokumentation doch dazu da, dass Schrott eben verhindert wird denk ich. Nehme an, dass deswegen darauf verwiesen wird.