Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Hallo LV-Gemeinde,
ich hab ein Programm, bei denen die Events manchmal länger dauern, je nach dem wie schnell mein
Gerät mir die Antworten zurückgibt. Wenn man jetzt einen Schalter öfters schnell drückt, werden die Events
gespeichert und dann ist der Zugriff auf andere Sachen gesperrt (Applikation beenden, usw.)
Kann man verhindern, dass Events gespeichert werden?!
Freu mich über jede Antwort, Gruß Simon
' schrieb:Hallo LV-Gemeinde,
ich hab ein Programm, bei denen die Events manchmal länger dauern, je nach dem wie schnell mein
Gerät mir die Antworten zurückgibt. Wenn man jetzt einen Schalter öfters schnell drückt, werden die Events
gespeichert und dann ist der Zugriff auf andere Sachen gesperrt (Applikation beenden, usw.)
Kann man verhindern, dass Events gespeichert werden?!
Freu mich über jede Antwort, Gruß Simon
Du kannst das Frontpanel für die Zeit in der das Event ausgeführt wird sperren. Dann kann in dieser Zeit niemand ein Steuerelement bedienen. Wenn du ein Event erstellst kann du unten ein Häckchen bei "Lock front panel until the event case for this event completes" setzen.
18.12.2007, 09:32 (Dieser Beitrag wurde zuletzt bearbeitet: 18.12.2007 09:33 von Achim.)
Hi,
du hast ganz offensichtlich in den jeweiligen Event-Cases While-Schleifen untergebracht, die auf irgendwas warten, gelle?
Das ist nicht gut! Ein Event ist "was kurzes", damit sollte man nur was antriggern...z.B. kann man damit in einen neuen Status eines Zustandsautomaten springen, der dann so oft wiederholt wird, bis dein Ergebnis da ist. Das Programm bleibt aber bis dahin in Bereitschaft für neue Events, z.B. "Abbruch". Sieh dir zu diesem Thema mal die diversen Foreneinträge an!
Zu deinem Problem: Ich weiß nicht, wie man Events "nicht speichern" kann. Aber du kannst ja für jedes Event "Lock frontpanel until event completes" definieren...damit kann dann niemand den Button nochmal drücken...allerdings auch keine anderen. Du könntest aber bei Event-Start diverse Sachen deaktivieren...dann wartetst du bis "fertig" und dann aktivierst du die nötigen Bedienelemente wieder...naja, das ist nicht die feine englische Art, aber es dürft funktionieren.
Du solltest dir aber wirklich mal das Konzept Zustandautomat/State Machine anschauen, damit kann man 99,99% aller Anwendungen in LV ganz bequem erschlagen!
Gruß
Achim
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Das Problem ist, dass ich ungefährt 20 Schalter auf dem GUI habe. Mit jedem Schalter schicke ich ein anderes Kommando über RS232 und lese es dann anschließend ein. Solange der ließt, werden alle anderen Events nur gespeichert und danach abgearbeitet. Hier wäre eine Statemachine glaube ich sehr unübersichtlich...
Der Menüpunkt "Lock front panel until the event case for this event completes" ist bei mir schon aktiviert, die Events werden trotzdem gespeichert!
18.12.2007, 09:49 (Dieser Beitrag wurde zuletzt bearbeitet: 18.12.2007 09:54 von Achim.)
Na dann pack doch alle Schalter in ein Cluster...wenn du einen betätigst, deaktivierst du das komplette Cluster inkl. dem gerade betätigten Button...und dann werden garantiert keine Events gespeichert, weil keine erzeugt werden können! Wenn das Event fertig ist, aktivierst du wieder.
Du musst dazu noch nicht mal für jeden Button einen eigenes Event machen, da reicht ein ValueChange des kompletten Cluster...und im Cluster ermittelst du mit "new Value", welcher Button grad gedrückt wurde...
Hier fehlt noch die De-/aktivierung...
A.
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
' schrieb:und dann werden garantiert keine Events gespeichert, weil keine erzeugt werden können!
Das ist ohne Zusatz aber nur bedingt richtig - zumindest bei mir und in LV8.5. Siehe Anhang.
Wenn das Bedienelement disabled ist und im Event "Frontpanel sperren" aktiviert ist, dann kann man auf das deaktivierte Element 10mal klicken - und diese 10 Klicks werden der Reihe nach abgearbeitet. Selbst unsichtbare Bedienelemente kann mal so betätigen.
Nur ein Deaktivieren des Bedienelementes und das Wegklicken von "Frontpanel sperren" (also darf das Frontpanel bearbeitet werden) funktioniert.
Ganz klar: Bei "Frontpanel sperren" wird der Klick gespeichert, nicht das Event. Ist der Eventcase fertig und das Bedienelement wieder enabled, erst dann wird der Klick ausgeführt - auf einem enableden Bedienelement. Bei nicht gesperrtem Frontpanel wird der Klick ausgewertet: Das Bedienelement ist aber disabled => kein Event.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Anzeige
18.12.2007, 21:13 (Dieser Beitrag wurde zuletzt bearbeitet: 18.12.2007 21:13 von Achim.)
' schrieb:Das ist ohne Zusatz aber nur bedingt richtig - zumindest bei mir und in LV8.5. Siehe Anhang.
Wenn das Bedienelement disabled ist und im Event "Frontpanel sperren" aktiviert ist, dann kann man auf das deaktivierte Element 10mal klicken - und diese 10 Klicks werden der Reihe nach abgearbeitet. Selbst unsichtbare Bedienelemente kann mal so betätigen.
Nur ein Deaktivieren des Bedienelementes und das Wegklicken von "Frontpanel sperren" (also darf das Frontpanel bearbeitet werden) funktioniert.
Ganz klar: Bei "Frontpanel sperren" wird der Klick gespeichert, nicht das Event. Ist der Eventcase fertig und das Bedienelement wieder enabled, erst dann wird der Klick ausgeführt - auf einem enableden Bedienelement. Bei nicht gesperrtem Frontpanel wird der Klick ausgewertet: Das Bedienelement ist aber disabled => kein Event.
Allerdings hab ich nicht weit genug gedacht...es sollte ja innerhalb des gleichen Events zuerst deaktiviert und dann wieder aktiviert werden...
Ich nehm' alles zurück und behaupte das Gegenteil...
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)