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 

Wie mache ich zwei Instanzen einer FGV im selben Projekt?



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!

05.10.2013, 17:44
Beitrag #1

Lupin Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Feb 2010

2012
2008
EN

1234
Oesterreich
Wie mache ich zwei Instanzen einer FGV im selben Projekt?
Ich habe in einem Projekt zwei Programme, die im Endeffekt zwei EXEs werden sollen. In diesen Programmen verwende ich ein paar functional globals, um einige Konfigurationsoptionen immer verfügbar zuhaben ohne massig "Kabel" verlegen zu müssen. Das Problem ist jetzt: baue ich die selbe functional global in beiden Programmen ein, "kommunizieren" diese darüber, was ich aber gar NICHT will. Jedes Programm soll seine eigene Instanz der FGV haben.

Sobald ich die Dateien kompiliere ist es kein Problem. Bei zwei EXEs sind die FGV automatisch von einander getrennt. Aber solange ich das ganze teste und die Programme über die Entwicklungsumgebung starte (wegen debugging usw.) kommen sich beide in die Quere. Das nervt natürlich ziemlich.

Die FGV werden in den Programmen jeweils an mehreren Stellen verwendet, das heißt reentrant setzen ist keine Option. Ich möchte jetzt aber auch nicht lauter Kopien der FGVs anlegen und damit gleich doppelt soviel Wartungsaufwand haben. Was kann ich da machen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
06.10.2013, 10:23 (Dieser Beitrag wurde zuletzt bearbeitet: 06.10.2013 10:24 von Lucki.)
Beitrag #2

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: Wie mache ich zwei Instanzen einer FGV im selben Projekt?
Und warum verwendest Du nicht einfach globale Veriablen? Zwar bleibt das Problem dann bestehen, aber der Wartungsaufwand geht doch entscheidend zurück. Statt 17 FGVs im ersten Projekt und 17 umbenannte FGVs im zweiten Projekt hättest Du in jedem Projekt nur ein einziges VI für alle 17 Veriablen. Ich jedenfalls habe mich nicht beeinflussen lassen von der hier verbreiteten kollektiven Meinung "FGVs gut, Globals schlecht" - und bin damit immer gut gefahren. FGVs haben durchaus ihre Berechtigung; wenn es aber nur darum geht, für einfache, sich selten ändernde Werte "Draht zu sparen", dann eher nicht.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.10.2013, 12:31
Beitrag #3

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Wie mache ich zwei Instanzen einer FGV im selben Projekt?
Du machst die eigentliche FGV rezenteste.
In zwei verschiedenen normalen VIs, die die zwei gewünschten Unstanzen sind, raufdürft du die reentrant FGV auf. Fertig!

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.10.2013, 12:32 (Dieser Beitrag wurde zuletzt bearbeitet: 06.10.2013 12:37 von Trinitatis.)
Beitrag #4

Trinitatis Offline
LVF-Guru
*****


Beiträge: 1.694
Registriert seit: May 2008

7.1 / 8.0 /2014-1, 18
2002
DE

18055
Deutschland
RE: Wie mache ich zwei Instanzen einer FGV im selben Projekt?
@Lucki,
prinzipiell würde ich deinen letzten post unterschreiben auch wenn ich fürchte, du trittst damit wieder mal eine alte Disskussion losBig Grin.

Was aber das Problem von Lupin angeht, hift es ja nicht wirklich weiter.


Gruß, Marko
(06.10.2013 12:31 )BNT schrieb:  Du machst die eigentliche FGV rezenteste.
In zwei verschiedenen normalen VIs, die die zwei gewünschten Unstanzen sind, raufdürft du die reentrant FGV auf. Fertig!

Gruß Holger

Ist die Sprache im LVF umgestellt worden?

Bahn

Hallo Holger,

Kannst du da 2 Worte mehr drüber verlieren ?


Gruß, Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.10.2013, 12:55
Beitrag #5

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Wie mache ich zwei Instanzen einer FGV im selben Projekt?
(06.10.2013 12:32 )Trinitatis schrieb:  @Lucki,
prinzipiell würde ich deinen letzten post unterschreiben auch wenn ich fürchte, du trittst damit wieder mal eine alte Disskussion losBig Grin.

Was aber das Problem von Lupin angeht, hift es ja nicht wirklich weiter.


Gruß, Marko
(06.10.2013 12:31 )BNT schrieb:  Du machst die eigentliche FGV rezenteste.
In zwei verschiedenen normalen VIs, die die zwei gewünschten Unstanzen sind, raufdürft du die reentrant FGV auf. Fertig!

Gruß Holger

Ist die Sprache im LVF umgestellt worden?

Bahn

Hallo Holger,

Kannst du da 2 Worte mehr drüber verlieren ?


Gruß, Marko

Da hat mich wohl mein iPhone mit seine Automatik ausgetrickst. Es sollte natürlich richtig so heissen:
"Du machst die eigentliche FGV reentrant. In zwei verschiedenen normalen VIs, die die zwei gewünschten Instanzen sind, rufst Du die reentrant FGV auf. Fertig!"

Warum hilft das nicht weiter? Die zwei Apps, also Haupt-VIs in einem Projekt sollen jeweils eine Instanz einer FGV benutzten, die Daten mit der gleichen Struktur speichern. So habe ich die Frage jedenfalls verstanden, und der Hinweis, dass es in der kompilierten Exe funktioniert bestätigt mich.

Wo ist da die Verwirrung? Warum tritt das eine alte Diskussion los?

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.10.2013, 13:01
Beitrag #6

Trinitatis Offline
LVF-Guru
*****


Beiträge: 1.694
Registriert seit: May 2008

7.1 / 8.0 /2014-1, 18
2002
DE

18055
Deutschland
RE: Wie mache ich zwei Instanzen einer FGV im selben Projekt?
(06.10.2013 12:55 )BNT schrieb:  Warum hilft das nicht weiter?

Wo ist da die Verwirrung? Warum tritt das eine alte Diskussion los?

Gruß Holger

Hallo Holger,

mein post war zweigeteilt. Der von dir zitierte Teil bezog sich ausschliesslich auf die Antwort von Lucki. Deine Antwort hatte ich mangels klingonischer Sprachkenntnisse beim 1. Mal nicht verstanden. Smile


Gruß, Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
06.10.2013, 13:09
Beitrag #7

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Wie mache ich zwei Instanzen einer FGV im selben Projekt?
Prima, dann ist ja jetzt alles klar.

Oder nicht, Lupin?

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.10.2013, 14:45
Beitrag #8

Lupin Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Feb 2010

2012
2008
EN

1234
Oesterreich
RE: Wie mache ich zwei Instanzen einer FGV im selben Projekt?
(06.10.2013 13:09 )BNT schrieb:  Prima, dann ist ja jetzt alles klar.

Oder nicht, Lupin?

Gruß Holger

Leider nein. Das bringt so nichts. Die FGV wird ja innerhalb des Programms an mehreren Stellen verwendet. Wenn ich nur eine einzige Stelle hätte, an der gelesen/geschrieben wird, würde ich mir FGVs sowieso nicht antun sondern gleich Feedback nodes verwenden. Eine reentrant FGV ist im Prinzip ja nichts anderes mehr als ein teurer Feedback Node.

Das mit globalen Variablen (stimmt natürlich, dass die viel einfacher zu warten sind), verschiebt das Problem nur auf eine höhere Ebene. Ich habe zum Beispiel eine Logging-Funktion, der ich nur einen Text übergebe. Die holt sich den Log-Dateinamen bzw. Referenz auf die geöffnete Datei aus der FGV. Wenn ich jetzt auf zwei globale Variablen umstelle, muss ich die Log-Funktion auch noch verdoppeln, da ich ja jeweils eine andere Globale einbinden muss. Da die Log-Funktion aber in beiden Programmen identisch ist (und auch sein soll), möchte ich hier nichts verdoppeln, und jetzt Wrapper um Wrapper zu schreiben kann doch hoffentlich auch nicht der Sinn sein.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.10.2013, 15:12
Beitrag #9

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Wie mache ich zwei Instanzen einer FGV im selben Projekt?
Als Alternative kannst Du das Projekt kopieren und unter einem anderen Namen speichern.
Du öffnest das eine Haupt-VI in dem einen LabVIEW-Projekt und das andere in dem zweiten LabVIEW-Projekt.
Jedes LabVIEW-Projekt stallt eine eigenen Applikationsinstanz dar. Ich denke das sollte funktionieren, nicht schön, aber...

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.10.2013, 15:49
Beitrag #10

Lupin Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Feb 2010

2012
2008
EN

1234
Oesterreich
RE: Wie mache ich zwei Instanzen einer FGV im selben Projekt?
(06.10.2013 15:12 )BNT schrieb:  nicht schön, aber...

Also obwohl es zwei unterschiedliche Projekte sind, binde ich die selben Dateien ein (zumindest alle, die geteilt werden sollen)? Labview ist dann hoffentlich so intelligent, dass es sofort merkt, wenn ich in Projekt A eine Datei verändert habe, die auch in Projekt B verwendet wird und nicht erst Projekt B komplett neu öffnen muss oder so?
Wenn das geht, kann ich damit leben. Ist immer noch viel schöner als Code-Verdoppelung, und auch noch besser als das, was ich als nächstes probiert hätte: Top-Level der Callchain abfragen und dementsprechend in der FGV den passenden Feedback-Node auswählen. Die FGV würde dann zwar jede Menge nicht verwendete FBN enthalten (in jedere Instanz eine andere), aber wäre mir auch immer noch lieber als Code-Verdoppelung.
Das mit dem Projekt scheint sogar auch das einfachste zu sein, sobald weitere solche Programme dazukommen würden. Zur Zeit ist es eine einfache Sender-überNetzwerk-Empfänger Struktur. Es ist aber nicht auszuschließen, dass es weitere leicht adaptierte Sender geben wird.
Danke jedenfalls! Werde mal schauen wieviel Aufwand der Umbau ist. Ich habe ja leider schon mit den Codeverdoppelungen angefangen (bei 4 oder 5 Dateien war's ja noch OK) bis es mir dann aber irgendwann mal zu blöd geworden ist.
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
  mehrere LabVIEW-Versionen auf dem selben PC SirTom 1 2.058 18.04.2024 18:35
Letzter Beitrag: GerdW
  benutzerdefinierte Error Codes in einer zentralen Datei im Projekt verwalten t.hipp 6 6.717 26.10.2020 16:08
Letzter Beitrag: Jessel_de
  zwei Plots in einem X-Y Graphen mit zwei Achsen bachatero18 7 5.380 20.11.2019 15:06
Letzter Beitrag: Lucki
  Instanzen identischer SubVi's, Verhalten unerklärbar studmt 5 4.952 22.07.2015 22:11
Letzter Beitrag: studmt
  Projekt in anderes Projekt einbinden A.Limbach 4 6.439 19.09.2014 11:52
Letzter Beitrag: A.Limbach
  Fensterpositionen mehrerer Instanzen speichern und laden NoWay 2 4.167 15.07.2014 14:11
Letzter Beitrag: NoWay

Gehe zu: