LabVIEWForum.de
Wie mache ich zwei Instanzen einer FGV im selben Projekt? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Wie mache ich zwei Instanzen einer FGV im selben Projekt? (/Thread-Wie-mache-ich-zwei-Instanzen-einer-FGV-im-selben-Projekt)

Seiten: 1 2


RE: Wie mache ich zwei Instanzen einer FGV im selben Projekt? - BNT - 06.10.2013 16:00

Du solltest bei solchen Problemen aber einmal grundsätzlich über den Entwurf Deiner Anwendungen nachdenken. Aber das ist ein anderes Thema.

Gruß Holger


RE: Wie mache ich zwei Instanzen einer FGV im selben Projekt? - Lucki - 06.10.2013 17:45

(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!

Meines Erachtens geht das nicht. Wenn ich z.B. eine FGV mit der Beschriftung "FGV1" reentrant machte, dann ist doch jedes Auftreten von FGV1 eine eigene Instanz. Also auch wenn FGV1 in einem einzigen VI mehrere Male aufgerufen wird. Und auch die FGV1, in denen geschrieben wird, sind andere Instanzen als die FGV1 in denen gelesen wird. Datenübertragung ist so überhaupt nicht mehr möglich.

Zum Thema Globale Veriablen
Zitat:Was aber das Problem von Lupin angeht, hift es ja nicht wirklich weiter.
Lupins Hauptanliegen war doch gar nicht das Problem selbst, sondern wie er den ausufernden Wartungsaufwand verringert. Und da hilft es schon.

Aber trotzdem bedaure ich, nicht auf die eigentliche Lösung das Problems gekommen zu sein: die beiden Programme in Projekte einzubinden, wodurch die Programme auch dann voneinander abgschottet sind, wenn sie in der Entwicklungsumgebung laufen.


RE: Wie mache ich zwei Instanzen einer FGV im selben Projekt? - BNT - 06.10.2013 18:52

(06.10.2013 17:45 )Lucki schrieb:  Meines Erachtens geht das nicht. Wenn ich z.B. eine FGV mit der Beschriftung "FGV1" reentrant machte, dann ist doch jedes Auftreten von FGV1 eine eigene Instanz. Also auch wenn FGV1 in einem einzigen VI mehrere Male aufgerufen wird. Und auch die FGV1, in denen geschrieben wird, sind andere Instanzen als die FGV1 in denen gelesen wird. Datenübertragung ist so überhaupt nicht mehr möglich.

Lucki, lies genau: Du machst die eigentliche FGV reentrant. In zwei verschiedenen normalen VIs, FGV1 und FGV2, die die zwei gewünschten Instanzen sind, rufst Du die reentrant FGV auf.

Die reentrant FGV enthält das Shift-Register mit der gewünschten Datenstruktur. FGV1 und FGV2 sind normale VIs, nicht reentrant, und Wrapper-VIs um die FGV. Damit hat man zwei Instanzen der FGV erzeugt. Das funktioniert. Probiere es aus.

Auf GitHub habe ich im Rahmen des CS++ Projekts solch eine reentrant-FGV implementiert, die ein Variant im Shift-Register benutzt. Damit bin ich fertig für alle Zeiten. Die einzelnen Elemente werden als Variant-Attribut gespeichert. Damit ist der Zugriff auch deutlich schneller als die lineare Suche in einem Array. Zu diesem Thema gibt es ein White-Paper auf ni.com. (Ich glaube, es ist in der VI-Beschreibung zitiert.)

Gruß Holger


RE: Wie mache ich zwei Instanzen einer FGV im selben Projekt? - jg - 06.10.2013 19:10

(06.10.2013 18:52 )BNT schrieb:  Lucki, lies genau: Du machst die eigentliche FGV reentrant. In zwei verschiedenen normalen VIs, FGV1 und FGV2, die die zwei gewünschten Instanzen sind, rufst Du die reentrant FGV auf.

Die reentrant FGV enthält das Shift-Register mit der gewünschten Datenstruktur. FGV1 und FGV2 sind normale VIs, nicht reentrant, und Wrapper-VIs um die FGV. Damit hat man zwei Instanzen der FGV erzeugt. Das funktioniert. Probiere es aus.
Aha, ja, das geht. Sehr schöne Idee. Top2 Ich muss zugeben, auf Grund der iPhone Tippfehler hatte ich es zuerst auch nicht verstanden.

Gruß, Jens