LabVIEWForum.de
LV Programm Registerkarte mit Events - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: LV Programm Registerkarte mit Events (/Thread-LV-Programm-Registerkarte-mit-Events)

Seiten: 1 2


LV Programm Registerkarte mit Events - LV_Begin - 11.08.2008 15:07

Hallo,

habe mir zum testen ein kleines Programm geschrieben und schon anfängliche Probleme.
Habe mich jetzt auch schon einige Zeit immer wieder mit dem Problem beschäftigt, komme aber leider nicht weiter.

Könnt ihr mir sagen, ob ich richtig LV Programmiere, die Sache ganz falsch angehe oder einfach nur was im Programm fehlt.

Ich komme von NI CVI (Fortgeschritten) und mache im Rahmen meiner Technikerarbeit ein LV- Programm.

Das Problem bei dem Programm ist, wenn ich von einem Reiter in den anderen springe, das Programm nicht mehr auf Benutzerevents reagiert.
Ich vermute das liegt daran, dass Events noch irgenwo im System sind und diese nicht abgearbeitet werden oder so, hab aber keine Ahnung wie ich das jetzt richtig löse oder wie ein Profi so etwas löst.

Ist es falsch, in Cases Events zu verwenden?

Jedenfalls bin ich über jede Hilfe dankbar!
Danke!

Lv82_img


LV Programm Registerkarte mit Events - jg - 11.08.2008 15:15

Lies dir mal die Hilfe zur Event-Struktur durch, vor allem die "Caveats and Recommendations when Using Events in LabVIEW".

[attachment=13899]

Nach Möglichkeit NIE mehr als eine Eventstruktur innerhalb einer Loop (Profis empfehlen sogar nur eine Event-Struktur pro VI) verwenden, dann läuft alles glatt.

Und bitte beachten, LV-Version bei Uploads von VIs angeben.

MfG, Jens


LV Programm Registerkarte mit Events - RoLe - 11.08.2008 15:24

..... und der Seitenwechsel einer Registerkarte löst auch einen Event aus.


LV Programm Registerkarte mit Events - IchSelbst - 11.08.2008 16:16

' schrieb:Das Problem bei dem Programm ist, wenn ich von einem Reiter in den anderen springe, das Programm nicht mehr auf Benutzerevents reagiert.
Stimmt.
Wenn oben links an der Event-Struktur keine Zahl hängt, dann hängt da -1 dran. Und dann wird kein Timeout ausgeführt. Da nützt aller Code im Timeout-Case nix. Einmal im Evant-Case drinnen, kommst du also nciht mehr raus.

Zitat:Ist es falsch, in Cases Events zu verwenden?
Ja.
In deinem Falle sind die mehreren Evant-Strukturen besondern schlecht. Pack alles in eine einzige und leg die in eine eigene While-Schleife.

Noch mehr Hinweise:
Wenn du ein Anzeige/Bedien-Element nicht in einem Datenfluß brauchst, kannst du es in den entsprechenden EventCase legen. Dann findet man über Suchen auch den EventCase.
Mit der Verwedung von Propertys (Eigenschaftsknoten) bin ich immer recht sparsam. Ich nehm lieber Lokale Variablen.
Un in einem EventCase kann man die Werte verwenden, die der EvantCase bereits zur Verfügung stellt: Neuer Wert etc.


LV Programm Registerkarte mit Events - LV_Begin - 14.08.2008 07:00

Danke an alle für die Hilfreichen Tipps und Vorschläge.

Ich habe das Programm mit einer Event- Struktur aufgebaut - läuft ohne Probleme.

' schrieb:..... und der Seitenwechsel einer Registerkarte löst auch einen Event aus.
Was ist damit gemeint? Verstehe die Nachricht "dahinter" nicht. Registerkarten- Events arbeite ich doch auch ab?

Ist es überhaupt möglich, das Programm (je ein Event in jedem Case) so zu lösen, dass es Funktioniert?

Wenn ich jetzt ein großes Programm habe, werden in einer Event- Struktur einige Events drin sein, komme ich da irgenwie elegant und einfach ersichtlich für jeden eine Lösung hin?
Oder wird das immer so gemacht?

Gibt es von einem großen Programm irgendwo einen Link zum runterladen, bräuchte da noch ein bisschen Anregungen, wie große Programme richtig gelöst werden. Die Examples sind zwar ganz hilfreich für einzelne kleine Hilfestellungen, aber ich finde leider keine VI´s wo ich mir was abschauen kann.

Bevor ich mit irgendwelchen Tricks zu Lösung komme will ich (wie gewohnt) ein sauberes Programm erstellen, bei dem kein Programmierer die Hände über dem Kopf zusammenschlägt.


LV Programm Registerkarte mit Events - IchSelbst - 14.08.2008 07:46

' schrieb:Ist es überhaupt möglich, das Programm (je ein Event in jedem Case) so zu lösen, dass es Funktioniert?
Genau kann dir das nur einer sagen, der die Internas von LV kennt. Ich gehöre nicht dazu. Ich kann mir aber vorstellen, dass das nicht zu 100% funktionieren wird.

Zitat:Wenn ich jetzt ein großes Programm habe, werden in einer Event- Struktur einige Events drin sein, komme ich da irgenwie elegant und einfach ersichtlich für jeden eine Lösung hin?
Ja.
Sobald du dich an den Styleguide hälst, bekommst du alles elegant und einfach ersichtlich hin. Die drei wichtigsten Punkte des Styleguide sind SubVI, SubVI und SubVI.

Zitat:Oder wird das immer so gemacht?
Ja, es geht immer so.

Zitat:Gibt es von einem großen Programm irgendwo einen Link zum runterladen, bräuchte da noch ein bisschen Anregungen, wie große Programme richtig gelöst werden.
Was ist ein großes Programm? Viel SubVIs im allgemeinen, viel Blockdiagramm pro SubVI, viel Frontpanel pro SubVI, viele SubVI mit benutzeroberfläche?
Halt dich einfach an den Styleguide (suchst du auf NI-Homepage): Datenfluß (also Verdrahtung überhaupt), SubVIs statt große Blockdiagramme, gerade überschneidungsfreie Verdrahtung von links nach rechts ([*grübel*] wie machen das eigentlich die Chinesen?), keine Globalen Variablen.
Außerdem solltest du Programmstrukturen wie Queues/Melder, Statemachine, parallele While-Schleifen (= Tasks) verstehen.


LV Programm Registerkarte mit Events - RoLe - 14.08.2008 10:38

' schrieb:Ich habe das Programm mit einer Event- Struktur aufgebaut - läuft ohne Probleme.
Was ist damit gemeint? Verstehe die Nachricht "dahinter" nicht. Registerkarten- Events arbeite ich doch auch ab?

Jetzt habe ich gesehen, dass du das gebraucht hattest um den Case zu verlassen.
Wenn du jetzt alles in einer Event-Struktur drinn hast, brauchst du das ja gar nicht mehr.
Nehme an, dass du die Case-St. der Seitenwechsel einfach entfernt hast, darauf wollte ich hinweisen.


LV Programm Registerkarte mit Events - LV_Begin - 18.08.2008 14:44

Ein großes/komplexes Programm ist für mich, ein hoher Grad an Objektorientierung, sowie viel Hardware IO.

Am besten wäre es, wenn mehr als zwei Geräte Initialisiert, Konfiguruiert und Bedient werden. Das ganze noch so Programmiert, dass die Hardware währen der Laufzeit ausgewählt werden kann und diese dann entsprechend behandelt wird.
Entsprechend dieser Größe ergeben sich auch viele SubVis.

Finde leider dazu keine entsprechenden Referenzen.


LV Programm Registerkarte mit Events - IchSelbst - 18.08.2008 15:58

' schrieb:ein hoher Grad an Objektorientierung
Jetzt wird's aber kompliziert. Was verstehst du denn in LV unter objektorientiert? Das was LV selbst darunter versteht bestimmt nicht. Das kann man nämlich noch nicht anwenden.
So Sachen wie Event-gesteuert schon eher: Eine Event-Struktur mit beliebig vielen Event-Cases. "Klassen" im weitesten Sinne einer OOP kann man auch in LV machen: eigenständiges SubVI, das parallel läuft. Dieses enthält eine Statemachine, die durch eine Queue gesteuert wird. Das SubVI hat Propertys, gekapselte (interne) Daten, Funktionen.

Zitat:sowie viel Hardware IO.
Ja. Hier bist du bei LV richtig. Für jede Hardwaretyp eine Klasse. Fertig.

Zitat:Am besten wäre es, wenn mehr als zwei Geräte Initialisiert, Konfiguruiert und Bedient werden.
Kein Problem.

Zitat:Das ganze noch so Programmiert, dass die Hardware währen der Laufzeit ausgewählt werden kann und diese dann entsprechend behandelt wird.
Auch Kein Problem. Nur mit etwas mehr Arbeit verbunden.

Zitat:Finde leider dazu keine entsprechenden Referenzen.
Das glaub ich dir.

Ob ich was als Muster habe, muss ich erst noch überlegen.


LV Programm Registerkarte mit Events - IchSelbst - 18.08.2008 16:04

' schrieb:Ob ich was als Muster habe, muss ich erst noch überlegen.
Ein Muster für eine Klasse findest du hier (Beitrag #12).