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 

Probleme mit Referenz beim Anpassen von dynamischen Ereignissen



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!

04.07.2015, 16:51
Beitrag #1

Hasenfuss Offline
LVF-Stammgast
***


Beiträge: 331
Registriert seit: Dec 2012

2012
2012
DE



Probleme mit Referenz beim Anpassen von dynamischen Ereignissen
Hallo,

ich habe eine Anwendung, in der viele SubVI´s eine Eventstruktur haben. Oftmals müssen diese Eventstrukturen auch auf dynamische Ereignisse reagieren können. Bisher habe ich es so gehandhabt, dass ich mir eine FGV erstellt habe und im Init-Case alle Ereignisse erstellt und registriert habe. Dann musste ich die Referenz nach draußen führen. Dazu bin ich an die Stelle gegangen, wo die Referenz abgenommen werden kann und habe geklickt "Anzeigeelement erstellen". Schon hatte ich das Elemet im Frontpanel und konnte es bequem als Anschluss für das VI hinzufügen.

Es kommt natürlich vor, dass Ereignisse während des Programmierens wegfallen oder neue hinzukommen. Dann ändert sich da natürlich die Referenz und der Block im Frontpanel, den ich schön mit einem VI-Anschluss verbunden habe, ist plötzlich uptodate.

Bisher hab ich es so gehandhabt, dass ich das veraltete Referenzobjekt gelöscht habe und wieder ein neues mit Hilfe der Maus über "Anzeigeelement erstellen" gemacht habe. Das musste ich dann aber auch wieder neu verbinden.

Gäbe es auch noch eine andere Variante? Oder bleibt mir nur der Weg mit dem Löschen der alten registrierten Eventregistrierungsreferenz?

Ich hab mal ein Bild angefügt, wo man das Problem sieht, dass ich meine.

Oder gibt es noch andere Möglichkeiten, wie man die Events, die man z.B. für mehrere SubVIs braucht, anders als in einer FGV speichern könnte? Die Variante mit der FGV gefällt mir so am besten, weil ich sie so initialisieren kann, lesen darf und auch den case "Events löschen" einbauen kann, um die Events sauber auch wieder zu entfernen. Es bleibt nur das Problem, wenn ich die FGV anpassen muss.


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.11.2015, 14:52 (Dieser Beitrag wurde zuletzt bearbeitet: 15.11.2015 15:17 von IchSelbst.)
Beitrag #2

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.696
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: Probleme mit Referenz beim Anpassen von dynamischen Ereignissen
Zwar verspätet, aber weil's doch interessant ist.

(04.07.2015 16:51 )Hasenfuss schrieb:  Oder bleibt mir nur der Weg mit dem Löschen der alten registrierten Eventregistrierungsreferenz?
Ich glaube, dass bleibt uns vorerst so erhalten. Ob das in LV 2015 funktioniert, weis ich nicht ...

Eine Referenz, also auch das, was beim "Ereignisreferenz erzeugen" (also "Ereignisse registrieren") entsteht, ist immer etwas Eindeutiges. Das ist auch gut so. Und nur, was genau diese Referenz hat, darf auch zusammenarbeiten. Wenn du jetzt bei der Registrierung ein weiteres Event hinzufügst, entsteht automatisch eine ... neue Referenz!. Und da die anders ist als die alte, funktioniert die neue nicht mehr: das ist das, was du als Fehler siehst.

Folgendes muss man noch beachten:
Wenn du irgendein untypisiertes Element auf dem Blockdiagramm erzeugst, z.B. den Ereigniseingang auf einer Event-Struktur, dann wird genau in dem Moment, wenn du einen Draht anschließt dieses Element typisiert. Einmal typisiert, ist das Element für immer auf diesen Typ festgelegt. Eine automatische "Umtypisierung" gibt es nicht. - Ob es die nicht gibt, oder ob die LV-Entwickler die nicht integriert haben, weis ich nicht.

Zitat:Die Variante mit der FGV gefällt mir so am besten, weil ich sie so initialisieren kann, lesen darf und auch den case "Events löschen" einbauen kann, um die Events sauber auch wieder zu entfernen.
FGV's find' ich gut ...


(15.11.2015 14:52 )IchSelbst schrieb:  Einmal typisiert, ist das Element für immer auf diesen Typ festgelegt.
Jetzt ist mir doch beim Durchlesen meines eigenen Textes was aufgefallen: siehe Zitat.

Was liegt da näher, als einen strikten Typ zu definieren. Strikte Typen haben nämlich den Vorteil, dass man sie "umtypisieren" kann: Alles, was dann mit diesem (strikten) Typ zusammenhängt, passt sich automatisch an - das ist ja eines der schönen Sachen bei LV.

Mach jetzt also folgendes:
Am Ausgang des Elementes "Ereignis registrieren" erstellt du eine Konstante, die du in einen strikten Typ umwandelst und unter einem Namen (nämlich dem Typen-Namen) speicherst. Dann erstellt du von diesem strikten Typ eine Konstante und hängst die an den Eingang von "Ereignis registrieren". Daraufhin wirst du den Knoten weder erweitern noch verkürzen können - was ja richtig so ist, weil er ja jetzt strikt ist. Jetzt musst du - aber nur einmalig - alle Elemente, die mit dieser Referenz verbunden sind, vom strikten Typ ableiten. Und zwar alles: den Ausgang der FGV und alle Eingänge an den Event-Strukturen.

Und jetzt wird's interessant:
Wenn die ein Ereignis hinzufügen willst, gehst du wie folgt vor:
* Trenne die strikte Konstante vom Eingang des Registrierelementes - nur trennen, nicht löschen. Auch den Ausgang musst du trennen (vom Tunnel der Case-Sequenz).
* Erweitere jetzt den Knoten um ein Ereignis.
* Erstelle am Ausgang des Knotens eine Konstante und schneide diese Konstante mit Ctrl-X aus.
* Öffne die strikte Typdefinition, die zu zuvor erstellt hat, und die du vom Eingang entfernt hast.
* Füge die mit Ctrl-X ausgeschnittene neu Referenz(!) ein und lösche die alte Referenz heraus. Jetzt die Typdefinition speichern.
* Verbinde das sich noch immer im Blockdiagramm befindende Element wieder mit dem Eingang des Knotens - der jetzt wieder strikt wird und nicht erweiterbar wird.
* Verbinde den Ausgang des Knotens wieder mit dem Tunnel der Case-Sequenz.

Und schon geht wieder überall alles. Weil im ganzen Programm, also auch in den anderen VIs, alles auf strikt steht, entsteht nirgendwo ein Fehler.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Erkennung von dynamischen Referenzlinien Rainerr 5 3.327 31.08.2020 10:26
Letzter Beitrag: GerdW
  *.exe als Std-Anwendung im dynamischen Kontextmenü in WIN djelton 5 5.313 20.08.2014 09:54
Letzter Beitrag: GerdW
  Array Element als Referenz von Referenz Benjamin Fuchs 15 20.605 18.02.2014 11:56
Letzter Beitrag: RabenFlug
  Werte aus Casestruktur zyklisch in Liste mittels dynamischen Events einfügen Wendigo 4 4.791 29.10.2012 08:48
Letzter Beitrag: Wendigo
  Ereignisstruktur: Zwischen Ereignissen springen smozart 3 6.963 30.11.2011 18:10
Letzter Beitrag: Lucki
  Ereignisabhängiger Zähler, der die Anzahl von Ereignissen mitzählt bienee 8 8.603 26.08.2011 10:42
Letzter Beitrag: GerdW

Gehe zu: