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 

Referenzen in Variable speichern und in SubVI aufrufen



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!

28.04.2015, 10:27
Beitrag #1

Hasenfuss Offline
LVF-Stammgast
***


Beiträge: 331
Registriert seit: Dec 2012

2012
2012
DE



Referenzen in Variable speichern und in SubVI aufrufen
Hallo,

ich habe in einem Programm verschiedene Anzeige- und Bedienelemente, nennen wir sie Bedien, Anzeige1 und Anzeige2. Um auf die Elemente drauf zugreifen zu können aus einem SubVI heraus, muss ich mit Referenzen arbeiten.

Ich habe in dem Program die Referenzen in einer funktionalen gloablen Variable zwischengespeichert. Das SubVI soll die Referenzen aus der FGV lesen, dass die Anzeige- und Bedienelemente steuern soll.

Leider nimmt das SubVI - das in dem Bild dargestellt ist - den Wert nicht an. Was mache ich da falsch?


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.04.2015, 10:36
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Referenzen in Variable speichern und in SubVI aufrufen
LabVIEW arbeitet streng typdefiniert. Einen "Variant-Datentyp" an ein "Bundle By Name" anzuschließen führt also automatisch zu einem "Broken Wire".

Lösung: An dieser Stelle musst du den "Variant" erst einmal in den richtigen Cluster-Datentyp überführen.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.04.2015, 12:45
Beitrag #3

Hasenfuss Offline
LVF-Stammgast
***


Beiträge: 331
Registriert seit: Dec 2012

2012
2012
DE



RE: Referenzen in Variable speichern und in SubVI aufrufen
Ich kann die Referenzadresse nicht in einer FGV speichern. Ich habe einen Cluster erzeugt, in dem vier Elemente zum Speichern der Referenzadresse erzeugt. Den hab ich in die FGV eingefügt. Leider erkennt das SubVI die Referenzadressen nicht - kann ich keine Referenzen von Objekten in einem SubVI zwischenspeichern, um sie an mehreren Stellen weiterverwenden zu können?


Angehängte Datei(en) Thumbnail(s)
           
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.04.2015, 12:56
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Referenzen in Variable speichern und in SubVI aufrufen
Hallo Hasenfuss,

doch, sowas kann man schon machen. Nur muss dein verarbeitendes VI eben genau den Typ der Referenz (bzw. den zugrundeliegenden Datentyp) kennen, um die Referenz weiterzuverwenden…

Was für Referenzen hast du denn da erzeugt? Welche Bedienelemente stecken dahinter?
Wieso musst du mit Referenzen hantieren - statt gleich die Daten in der FGV zu bündeln?
Hmm

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.04.2015, 13:10
Beitrag #5

Hasenfuss Offline
LVF-Stammgast
***


Beiträge: 331
Registriert seit: Dec 2012

2012
2012
DE



RE: Referenzen in Variable speichern und in SubVI aufrufen
Ich hab folgendes gemacht - ich bin auf "Referenz erzeugen" gegangen beim Element. Dann hatte ich die Referenz und am Ausgang hab ich gesagt - Bedienelement erzeugen. Dieses Bedienelement hab ich kopiert und in einen Cluster eingefügt - siehe das Frontpanel mit dem Cluster.

Ich habe in meiner Oberfläche eine Vielzahl von Bedienelementen, die ich alle mit Initialwerten füttern muss und später natürlich auch die Anzeigewerte anzupassen habe. Deshalb ist mein Blockdiagramm sehr voll. Meine Idee ist es, die Referenzen der Elemente in einer FGV zu speichern und dann z.B. die Initialisierungen in einem SubVI zu machen, was dort die Initialwerte setzt oder so.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.04.2015, 14:07 (Dieser Beitrag wurde zuletzt bearbeitet: 28.04.2015 14:11 von GerdW.)
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Referenzen in Variable speichern und in SubVI aufrufen
Hallo Hasenfuss,

Zitat:Ich hab folgendes gemacht - ich bin auf "Referenz erzeugen" gegangen beim Element. Dann hatte ich die Referenz und am Ausgang hab ich gesagt - Bedienelement erzeugen. Dieses Bedienelement hab ich kopiert und in einen Cluster eingefügt - siehe das Frontpanel mit dem Cluster.
Ich habe in meiner Oberfläche eine Vielzahl von Bedienelementen,
Und jetzt willst du für diese "Vielzahl von Bedienelementen" jeweils eine Referenz erzeugen und in diesem Cluster in der FGV ablegen? Hmm

Es ist dann doch viel einfacher, einfach eine Referenz auf das FP deines VIs zu holen und sich darüber alle Control-Referenzen zu holen. Dann filtert man die interessanten Bedienelemente über ihr Label - welches man dazu natürlich nach einem sinnvollen Schema benannt haben muss…

So sieht das bei mir aus:
   
Bei "1" werden die Referenzen auf die FP-objekte eingesammelt, bei "2" werden die zu setzenden Werte aus einer Datei geladen und dann über das Label der Controls zugewiesen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
29.04.2015, 12:48
Beitrag #7

Hasenfuss Offline
LVF-Stammgast
***


Beiträge: 331
Registriert seit: Dec 2012

2012
2012
DE



RE: Referenzen in Variable speichern und in SubVI aufrufen
Das ist natürlich sehr elegant :-)

Kannst Du Dir mal mein SubVI anschauen? Ich rufe das SubVI aus dem HauptVI auf und übergebe die VI-Referenz. Dann hab ich einen Eigenschaftsknoten mit Panel verwendet, dann Elemente. Das Array gehe ich in einer Schleife durch. Mit BeschrText frage ich ab, ob es sich um das Element handelt, dem ich einen Wert übergeben möchte, in dem ich den in einer Case-Anfrage auswerte.

Was mir daran nicht so gut gefällt ist, dass sich die Bezeichnung in dem Case nicht automatisch ändert, wenn ich die Bezeichnung eines Elements in dem Hauptprogramm ändere. Aber es ist auf jeden Fall 1000mal besser, was ich mir da gestern zusammengebastelt habe.

Kann ich denn an meinem jetzigen Entwurf noch etwas besser machen?


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.04.2015, 12:58
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Referenzen in Variable speichern und in SubVI aufrufen
Hallo Hasenfuss,

Zitat:Was mir daran nicht so gut gefällt ist, dass sich die Bezeichnung in dem Case nicht automatisch ändert, wenn ich die Bezeichnung eines Elements in dem Hauptprogramm ändere.
Warum sollte es?
Du hast einen Case namens "True" - wieso sollte dieser Case-Name mit dem Label irgendeines Controls verknüpft sein???

Zitat:Kann ich denn an meinem jetzigen Entwurf noch etwas besser machen?
Ich übergebe an Punkt 2 im obigen Bild zwei Arrays: eines mit Labels, eines mit Werten. Und über das Array mit den Labels suche ich mir das passende Control heraus! (Es gibt da so Funktionen wie "Search1DArray"…)
Das hat die Vorteile:
- Ich kann eine Config-Datei verwenden und dort mit dem Texteditor Labels ändern/hinzufügen/löschen - ganz nach Bedarf…
- Wenn ich das passende Control zum Label gefunden habe, kann ich den Controltyp abfragen und den zu übergebenden Wert passend aufbereiten (ich arbeite hier nur mit Zahlen oder boolschen Werten, das macht die Sache einfacher)…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.04.2015, 13:16 (Dieser Beitrag wurde zuletzt bearbeitet: 29.04.2015 13:17 von Hasenfuss.)
Beitrag #9

Hasenfuss Offline
LVF-Stammgast
***


Beiträge: 331
Registriert seit: Dec 2012

2012
2012
DE



RE: Referenzen in Variable speichern und in SubVI aufrufen
Cool, danke für Deine Antwort.

Ich hab jetzt in dem Beispiel zwei Array-Konstanten angelegt, die dann später z.B. für die Frontpanelelementsbezeichnung und den Initialwert stehen sollen und in der zweiten for-Schleife zugeordnet werden. Leider muss ich erst noch eine primäre for-Schleife anlegen, damit ich aus Elemente[] eine Liste von den Bezeichnungen kriege.

Meinst Du das so von der Art her?

Auf alle Fälle bin ich schon mal erleichtert, dass ich nicht so komplizierte FGVs anlegen muss, um die einzelnen Referenzadressen abzuspeichern. Auf die Idee wäre ich ohne Dich nicht gekommen - ganz herzlichen Dank deshalb nochmal.


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.04.2015, 13:22 (Dieser Beitrag wurde zuletzt bearbeitet: 29.04.2015 13:23 von GerdW.)
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Referenzen in Variable speichern und in SubVI aufrufen
Hallo Hasenfuss,

Zitat:Leider muss ich erst noch eine primäre for-Schleife anlegen, damit ich aus Elemente[] eine Liste von den Bezeichnungen kriege.
Sowas muss man ja pro VI nur ein einziges Mal durchführen…

Zitat:Meinst Du das so von der Art her?
Ja, in der Art. In der letzten Schleife dann noch die passende Referenz mittels IndexArray (und nicht per AutoIndizierung!) aus dem Referenzen-Array holen…
Und etwas Fehlerbehandlung schadet auch nicht, wenn man mal nicht das korrekte Label vergeben hat und deshalb keine passende Referenz gefunden wird!

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
  Extrem langsamer Variablen Zugriff über Referenzen hajos118 12 5.549 01.08.2022 17:20
Letzter Beitrag: BNT
  Muss man Referenzen von controls überhaupt schließen? dimitri84 4 4.204 21.04.2022 11:57
Letzter Beitrag: dimitri84
  Referenzen in mehreren Bibliotheken aktualisieren seuk 3 3.985 12.09.2019 09:10
Letzter Beitrag: IchSelbst
  Cluster mit Referenzen auf FP-Elemente Oli_N 8 9.024 15.02.2017 11:19
Letzter Beitrag: Oli_N
  Messdaten als glob. Variable speichern Majuler 3 3.962 10.11.2016 20:06
Letzter Beitrag: GerdW
  Frage zu Referenzen maxxillian 1 4.065 21.10.2016 08:04
Letzter Beitrag: GerdW

Gehe zu: