INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Case vs. Event ...und viele Buttons!



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!

30.06.2011, 07:30
Beitrag #1

Emittance Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jul 2009

7.1.1
2005
EN

0
Deutschland
Case vs. Event ...und viele Buttons!
Hi,

folgendes Problem: Ich habe eine VI mit vielen Buttons (ca. 30, latch) und möchte beim klicken auf einen dieser Buttons eine (buttonspezifische) Aktion ausführen. Jetzt habe ich diese Buttons alle zu einem Boolarray zusammengeführt und diesen dann in eine Zahl umgewandelt welche dann eine Case Sturktur steuert. Eine schöne Schleife drum und fertig.
Ist es nun besser die Buttons in einer eigenen Schleife laufen zu lassen (wegen latch) und die Aktionen per Event zu starten? Wo liegt denn der Unterschied zwischen einer Schleife, die die Buttons bei jedem Loop überprüft und einem Event Case, welches die Buttons überwacht?

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
30.06.2011, 09:33
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Case vs. Event ...und viele Buttons!
Hallo,

Zitat:Ist es nun besser die Buttons in einer eigenen Schleife laufen zu lassen (wegen latch) und die Aktionen per Event zu starten?
Ja. Leichter erweiterbar, besser lesbar durch (benannte) Eventcases...

Zitat:Wo liegt denn der Unterschied zwischen einer Schleife, die die Buttons bei jedem Loop überprüft und einem Event Case, welches die Buttons überwacht?
Im ständig CPU-Last erzeugenden Polling...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.06.2011, 10:21 (Dieser Beitrag wurde zuletzt bearbeitet: 30.06.2011 14:03 von Lucki.)
Beitrag #3

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Case vs. Event ...und viele Buttons!
Lad doch mal das angefangene VI hoch (es interessiert das FP, weniger der Code auf dem BD) und beschreibe etwas genauer, was Du vorhast.
Es könnte z.B sein, daß sich mit Radio-Buttons (Im deutschen LV "Optionsfelder" genannt) eine überraschend einfache Löung anbietet. Das könnte man prüfen.

Edit: Habe mal 3 verschiedenen Bedien-Behandlungen gegenübergestellt:
E1: Behandlung erfolgt nicht sofort, der Eigenschaftsknoten wird auch ohne Wertänderung dauernd aufgerufen, was in einer zeitkritischen Hauptscheife tödlich sein kann.
E2: Behandlung erfolgt nur bei Wertänderung und sofort, allerdings kommt es zu "irregulären" Zeiten beim Schleifendurchlauf, wie man am Stottern des Signaltons erkennt
E3: Behandlung sofort und nur bei Wertänderung, keine Beeinflussung des Schleifentaktes der Hauptschleife
   

2010 .vi  Ereignisbehandlung.vi (Größe: 14,58 KB / Downloads: 260)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.06.2011, 17:33 (Dieser Beitrag wurde zuletzt bearbeitet: 30.06.2011 18:38 von Emittance.)
Beitrag #4

Emittance Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jul 2009

7.1.1
2005
EN

0
Deutschland
RE: Case vs. Event ...und viele Buttons!
Hi,

danke erstmal für die Antworten.

Genau um das Polling geht es mir. Ich wollte halt wissen ob das Polling (Version E1) oder die Methode E3 besser ist für eine große Anzahl von bspw. Boolean's. Des Weiteren muss ich doch in E3 bei einem Button mit "latch"-operation diese Buttons ja auslagern in eine unabhängige Schleife oder? Sonst wechseln sie ja nicht mehr von true nach false nach drücken?

Hab mal meine Idee in eine VI gepackt und angehängt. Dieses möchte ich gerne mit einem Eventcase vereinfachen bzw. nur vereinfachen wenn es effektiver (weniger PC Recourcen, schnellere VI etc.) ist.

gruß


Angehängte Datei(en) Thumbnail(s)
   

7.1 .vi  BooleanWhile.vi (Größe: 42,78 KB / Downloads: 231)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.06.2011, 19:28 (Dieser Beitrag wurde zuletzt bearbeitet: 01.07.2011 08:04 von Lucki.)
Beitrag #5

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Case vs. Event ...und viele Buttons!
z.B. so:
(Die Schalter sind Elemente in einem transparentem Cluster)
   


8.0 .vi  BooleanWhile.vi (Größe: 14,47 KB / Downloads: 279)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.06.2011, 19:47 (Dieser Beitrag wurde zuletzt bearbeitet: 30.06.2011 19:48 von GerdW.)
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Case vs. Event ...und viele Buttons!
Hallo E,

Zitat:nur vereinfachen wenn es effektiver (weniger PC Recourcen, schnellere VI etc.) ist.
Erste Vereinfachung: eine Timing-Funktion in die Schleife packen. Wozu Millionen Male in der Sekunde die Buttons abfragen?
Hatte ich schon erwähnt, das Polling CPU-Resourcen unnötig belegt? Smile

Zweite Vereinfachung:
Statemachine benutzen. Per Eventstruktur die Knöpfe in State-Befehle umsetzen. Sehr sauber, sehr gut lesbarer Code, sehr einfach auf mehrere VIs veteilbar...

Dritte Vereinfachung:
Die Knöpfe für benutzerdefinierte Events definieren. Man kann die Knöpfe über ihren Namen zusammensuchen und wird so unabhängig von der Anzahl der Knöpfe. Und kann wieder eine Eventstruktur benutzen...

@Lucki:
Der Fragesteller hat nur LV7.1...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
30.06.2011, 20:47
Beitrag #7

Emittance Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jul 2009

7.1.1
2005
EN

0
Deutschland
RE: Case vs. Event ...und viele Buttons!
zu 1) Hab ich vergessen stimmt.

zu 2) Könntest Du das ein wenig genauer erklären? Meinst Du, dass ich eine Eventstruktur mit "Value Change"-Case von jedem Button anlege und dann dort die Ereignisse ausführe und anschließend den Button wieder FALSE stelle?

zu 3) In dem Event über die Referenz des geänderten Wertes eine Casestruktur anlegen? Ist das besser als mehrere Cases anzulegen?

gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.07.2011, 08:06 (Dieser Beitrag wurde zuletzt bearbeitet: 01.07.2011 08:08 von GerdW.)
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Case vs. Event ...und viele Buttons!
Hallo E,

zu 2)
Deine Knöpfe sollten Latched sein, dann brauchst du sie nicht selbst zurücksetzen. Im Eventcase gibst du nur ein Enum mit dem zu bearbeitenden State aus - die Statemachine selbst ist außerhalb der Eventstruktur (und evtl. auch außerhalb derer WhileLoop)... (Zu Statemachines gibt es mitgelieferte Beispiele!)

zu 3)
   
Wobei ich nicht weiß, ob LV7.1 schon dynamische Events unterstützt. Indem man die Referenzen auf alle zu bearbeitenden Controls zusammensammelt und sie alle (als Array) als dyn. Event registriert, kann man unabhängig von der Anzahl der Controls arbeiten. Man muss dann nur eine kleine Fallunterscheidung (anhand Controlname oder -caption) im Event durchführen...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.07.2011, 08:12
Beitrag #9

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Case vs. Event ...und viele Buttons!
(30.06.2011 19:47 )GerdW schrieb:  @Lucki:
Der Fragesteller hat nur LV7.1...
Danke, habs oben editiert, Bild hinzugefügt
Hatte Emittance mit dem anderen Poster verwechselt, der 7.1 als Profil angibt und im Text schreibt, daß er 2010 hat.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.07.2011, 13:17
Beitrag #10

Emittance Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jul 2009

7.1.1
2005
EN

0
Deutschland
RE: Case vs. Event ...und viele Buttons!
Also sollte jeder Button besser als State behandelt werden und nicht direkt einem Case zugeteilt werden? Also nicht so wie bei Lucki Big Grin

Ich hab mal was gebastelt, ich hoffe ich verstehe es jetzt richtig.

...Anmerkung: kann irgendwie nur 2 mal auf irgendeinen Button klicken, danach geht nix mehr.

Gruß


Angehängte Datei(en) Thumbnail(s)
   

7.1 .vi  eventtest.vi (Größe: 54,19 KB / Downloads: 225)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Case-Struktur: Angegebener Case nicht vorhanden braendy 10 6.792 02.02.2021 15:05
Letzter Beitrag: Lucki
Question (viele) Bedienelemente deaktivieren / aktivieren F.Bi 3 5.268 16.08.2018 12:59
Letzter Beitrag: GerdW
  Event Case Ignoriert Tastendruck wenn in Gegenwart eines anderen "Leeren" Event Case Ksanto 8 8.223 23.10.2017 09:08
Letzter Beitrag: Ksanto
  n-Ctrls event case zuweisen GT123 2 3.312 03.02.2017 12:18
Letzter Beitrag: GT123
  Viele Variablen in SubVI nutzen chrisw 3 3.783 02.12.2016 11:35
Letzter Beitrag: GerdW
  Buttons in Event not working TobSTAR 3 3.979 21.10.2016 10:53
Letzter Beitrag: TobSTAR

Gehe zu: