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 

Problem mit Referenz bei Applikation



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!

26.06.2006, 09:36
Beitrag #1

s200rs Abwesend
LVF-Gelegenheitsschreiber
**


Beiträge: 75
Registriert seit: Jul 2005

7.1 / 8.5.1
2002
DE

02826
Deutschland
Problem mit Referenz bei Applikation
Hallo zusammen,

folgende Ausgangslage:

- 2 von einander getrennte VIs
- mit einem VI möchte ich auf die Bedien-/Anzeigeelemente des anderen zugreifen
- Übergabe der Referenz der Bedienelemente als Parameter an das andere nicht möglich, da dieses eben kein Sub-VI ist

eine Lösung:

beim Start des ersten VIs Umwandeln der Referenz in vorzeichenlose 32-Bit-Zahl, schreiben dieser Zahl in eine Datei. Das zweite VI liest beim Aufruf diese Zahl ein und wandelt es in die Referenz zurück. Über Eigenschaftsknoten kann ich dann auf die Objekte des ersten VIs zugreifen.

Ist zwar bißchen von hinten durch die Brust ins Auge geschossen, funktioniert aber. Wink

zum eigentlichen Problem:

Wenn ich eine *.exe damit erstelle funktioniert's nicht mehr.

Ein an den Eigenschaftsknoten im zweiten VI angeschlossener Fehlerbehandler meldet Fehler 1055 "Ungültige Objektreferenz". Die U32-Zahl in der Hilfsdatei stimmt soweit.

Hat jemand 'ne Idee, woran das liegen könnte, wie ich es beseitigen kann, bzw. weiß jemand 'ne elegantere Lösung als die mit der Datei?

________________

LV 7.1; 8.5
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
26.06.2006, 10:27
Beitrag #2

Svente Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 69
Registriert seit: Nov 2005

8.2.1, 8.6, 2010, 2012
2000
DE_EN

14974
Deutschland
Problem mit Referenz bei Applikation
Ja,

ich habe mal was mit Umgebungsvariablen probiert.

Das würde funktionieren mit der Übertragung von einem Vi ins andere.

Früher wurde das mit globalen Variablen gelöst.

So hab' ich jedenfalls deine Anforderungen verstanden...

Svente
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.06.2006, 11:07
Beitrag #3

s200rs Abwesend
LVF-Gelegenheitsschreiber
**


Beiträge: 75
Registriert seit: Jul 2005

7.1 / 8.5.1
2002
DE

02826
Deutschland
Problem mit Referenz bei Applikation
' schrieb:Ja,

ich habe mal was mit Umgebungsvariablen probiert.

Das würde funktionieren mit der Übertragung von einem Vi ins andere.

Früher wurde das mit globalen Variablen gelöst.

So hab' ich jedenfalls deine Anforderungen verstanden...

Svente

Hallo,

danke für die Antwort.

Umgebungsvariablen kann ich (noch) nicht benutzen, da ich im Moment nur LV 7.1 benutze.

Ursprünglich habe ich auch globale Variablen benutzt, habe dann aber das Haupt-VI kompiliert und das zweite VI, das nun auf die Elemente des Haupt-VIs zugreifen soll, wird dynamisch aufgerufen.
Und als *.exe funktionierte das eben auch nicht. Habe zu dem Zeitpunkt aber etwas unter Zeitdruck gestanden und nicht lange nach Ursachen gesucht und dann gleich die oben beschriebene Variante ausprobiert. Nur klappt die eben auch nicht Angry

Bin im Moment gerade dabei, wieder mit den Globalen Variablen herumzuprobieren, wär aber nicht schlecht, wenn jemand für obiges Problem auch 'ne Lösung kennt, vielleicht braucht man's nochmal.

________________

LV 7.1; 8.5
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.11.2006, 16:51 (Dieser Beitrag wurde zuletzt bearbeitet: 09.11.2006 16:52 von Kai_N.)
Beitrag #4

Kai_N Offline
LVF-Grünschnabel
*


Beiträge: 15
Registriert seit: Nov 2006

4.0, 5.1, 6.1, 7.1, 8.21, 8.51, 8.6, 2010
2000
kA

42119
Deutschland
Problem mit Referenz bei Applikation
Wenn Du die beiden VIs nicht separat kompilierst kannst Du auf die gleichen globalen variablen zugreifen. Damit beide Fenster aufgehen und beide Vis laufen musst Du nur von einem der beiden aus das zweite aufrufen (natürlich unter den Vi-optionen "Front panel öffnen bei start" (oder so ähnlich) anwählen). Du wirst in beiden VIs wahrscheinlich while loops haben. ruf das zweite VI auserhalb des WHILE-loops auf, dann läuft das "sub-vi" parallel mit deinem haupt-while loop. Wenn Du als stop-bedingung für beide WHILE-Loops in beiden VIs ne globale Variable benutzt, dann klappt auch das Beenden vorbildlich.

Hoffe das hilft,

Kai
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.11.2006, 08:47
Beitrag #5

s200rs Abwesend
LVF-Gelegenheitsschreiber
**


Beiträge: 75
Registriert seit: Jul 2005

7.1 / 8.5.1
2002
DE

02826
Deutschland
Problem mit Referenz bei Applikation
' schrieb:Wenn Du die beiden VIs nicht separat kompilierst kannst Du auf die gleichen globalen variablen zugreifen.
Kai


Hallo,

mittlerweile habe ich 'ne Lösung gefunden.
Das Problem ist, daß ich ein Programm entwickle, was aus lizenzrechtlichen Gründen als Applikation auf 'nem anderen Rechner läuft. Zum Zeitpunkt der Erstellung des eigenständig laufenden Programm ist aber noch nicht klar, welche Funktionen es alles erfüllen soll. Daher werden dann im Einsatz dynamisch Sub-VIs aufgerufen, die dann die jeweilige Funktionalität erfüllen. Daher müssen sie separat kompiliert werden, wobei ja nur das Hauptprogramm kompiliert wird.
Nun entsteht aber bei der verwendung globaler Variablen das Problem, daß das globale-Variablen-VI zum einen in die Applikation (fest) eingebunden ist, wenn ich die dynamischen Sub-VIs aufrufe, ich dieses VI aber nochmal separat liefern muß, da die Sub-VIs sonst nicht ausführbar sind.
Das merkwürdige ist nur, daß ohne separates glob.-Var.-VI einige SubVIs laufen, einige nicht. Mit dem separaten laufen alle, aber nun ist es zweimal vorhanden. Die Applikation greift auf das in ihr eingebundene zu, und die SubVIs auf das gleichnamige ungebundene. Es sind also zwei verschiedene, und trotzdem klappt's Unsure

Da mir das ganze bißl schwammig ist, wollte ich versuchen, die globalen Variablen rauszuschmeißen.
Das ganze geht, indem ich von den SubVIs aus die Anzeige- und Bedienelemente des Hauptprogramms auslese und damit an die benötigten Größen zum Lesen und Schreiben herankomme:

- VI-Referenz auf aktuelles Sub-VI öffnen
- Eigenschaftsknoten "Aufrufende" liefert Namen des (aufrufenden) Hauptprogramms
-> VI-Referenz des Hauptprogramms öffnen
-> Eigenschaftsknoten auf VI-Referenz mit Eigenschaft "Alle Bedienelement-Werte ermitteln" in Verbindung mit Elemente = true bzw. false liefert dann Feld aus Bedien bzw. Anzeige-Element als Cluster aus Objektname und dem aktuellen Wert als "flattened Data String"
- dieses Feld nur noch nach gewünschtem Bedienelementname durchsuchen und Werte aus dem "flat Data"-String mittels "String in Daten konvertieren" lesbar machen, der ObjektTyp ist ja bekannt und ändert sich nicht

Das funktioniert ganz gut.

________________

LV 7.1; 8.5
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
  Problem mit erstellter Applikation syntec 2 3.715 02.07.2009 15:55
Letzter Beitrag: syntec
  Problem mit VI Referenz Tweety 7 6.206 09.02.2007 09:55
Letzter Beitrag: Tweety
  Problem beim erstellen einer Applikation jan2201 1 5.998 26.04.2005 16:41
Letzter Beitrag: jan2201

Gehe zu: