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 

Dieses Thema hat akzeptierte Lösungen:

Werteübergabe in anderes VI mit globaler Variable



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!

27.01.2014, 18:10 (Dieser Beitrag wurde zuletzt bearbeitet: 27.01.2014 19:43 von jg.)
Beitrag #1

BobbyBau91 Offline
LVF-Grünschnabel
*


Beiträge: 25
Registriert seit: Nov 2013

11
2013
DE



Question Werteübergabe in anderes VI mit globaler Variable
Hallo zusammen,

für mein Schulprojekt habe ich mir folgenden Startdialog gebastelt, in dem man unter anderem den COM-Port meines Microcontrollers auswählen kann:
   

Nun gebe ich diesen COM-Port an eine globale Variable:
   

Und hier möchte ich diesen Wert wieder abgreifen:
   

Wenn ich nun das Programm starte, an welches dieser Wert übergeben werden sollte, bekomme ich eine Fehlermeldung, das die Eingangsparameter ungültig sind.
Wenn ich statt der Variable ein Bedienelement verwende, funktioniert mein Programm.

Woran könnte das liegen? Im VI der globalen Variable habe ich nur ein Bedienelement (VISA-Ressourcenname)...


Gruß Bob

EDIT jg: Externe Bilderlinks gelöscht
und an die Nicht-Apple-aner: Nehmt den Download aus Beitrag #3


Angehängte Datei(en)
0.0 .zip  Schalterauswertung.zip (Größe: 1,74 MB / Downloads: 224)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
27.01.2014, 18:34 (Dieser Beitrag wurde zuletzt bearbeitet: 27.01.2014 18:40 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Werteübergabe in anderes VI mit globaler Variable

Akzeptierte Lösung

Hallo Bob,

ich sage nur: RACE CONDITION!
Und außerdem noch: THINK DATAFLOW!

Hast du mal kontrolliert, was in deiner globalen Variablen steht? Und warum das drin steht, was da drin steht?

Und warum nimmst du keinen Draht? Warum muss es eine globale Variable sein?

Zu deinem ZIP:
Leider hat der MAC ein ziemlich verkorkstes Dateisystem. Noch dazu, wenn man Umlaute in seinen Dateinamen verwendet. Beim nächsten Mal solltest du dein MainVI mitsamt aller subVIs in eine LLB speichern, damit die Mehrheit der Win-User damit keine Probleme beim Öffnen hat! Dateien mit Namen wie "Einga╠ênge 0101 Cluster.vi" lassen sich unter Windows leider nicht öffnen und führen zu fehlenden subVIs in LabVIEW. Außerdem würde dein ZIP dann nicht als Hauptbestandteil diese riesigen ICON-Dateien enthalten (1,8 von 2,1MB)…

Edit:
Dein "Eingänge 0101 Cluster"-VI ließe sich so vereinfachen:
   
Du musst nur den Offsetvektor wieder ergänzen, ich hatte keine Lust deine Werte da abzutippen…
Und warum nimmst du einen Ausgangscluster statt eines Arrays?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.01.2014, 18:40 (Dieser Beitrag wurde zuletzt bearbeitet: 27.01.2014 18:44 von jg.)
Beitrag #3

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Werteübergabe in anderes VI mit globaler Variable
Typisches Beispiel der Nichtbeachtung von Datenfluss und des Multithreading von LabVIEW.

Hier nochmal das Blockdiagramm deines Start.vi:
   
Was passiert? Eventstruktur und Auslesen der COM-Port Auswahl sind parallel programmiert. Sie werden somit auch "parallel" ausgeführt. Also:
- VI startet.
- Akt. Auswahl (bei Start leer) von COM-Port wird an globale Variable übergeben. Eventstruktur startet und wartet auf ein Event.
- Wenn du jetzt eine neue Auswahl bei COM-Port triffst, wird die Übergabe an die globale Variabel nicht nochmal ausgeführt, denn die Eventstruktur wartet noch auf ein Event, die While-Loop läuft also nicht ein weiteres Mal durch.
- Nehmen wir an, du betätigst jetzt "Messung". Der Code im Event "Messung:Value Change" wird jetzt ausgeführt. In der globalen Variable steht aber noch eine leere Auswahl. Folge: FEHLERMELDUNG!

Gruß, Jens

P.S. und Offtopic2 Bitte Anhänge immer hier im LVF hochladen, nicht bei externen Hostern (vgl. LVF-Regeln).

EDIT: Mit DATAFLOW hat Gerd mal wieder dieselbe Idee. Keine Überraschung...

EDIT 2: Für alle Nicht-Apple-User, hier ein korrigiertes Archiv: lv11_img
0.0 .zip  Schalterauswertung2.zip (Größe: 131,64 KB / Downloads: 255)

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
27.01.2014, 19:04
Beitrag #4

BobbyBau91 Offline
LVF-Grünschnabel
*


Beiträge: 25
Registriert seit: Nov 2013

11
2013
DE



RE: Werteübergabe in anderes VI mit globaler Variable
Danke sehr, habe mal wieder viel zu kompliziert gedacht Big Grin
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
  Stream-Libary anderes Verzeichnes LV-New 5 3.815 23.04.2021 07:11
Letzter Beitrag: GerdW
  Werteübergabe durch Tabelle! masch_18 2 3.144 12.10.2017 13:45
Letzter Beitrag: masch_18
  VI durch anderes VI fernsteuern joptimus 10 8.623 16.11.2015 22:35
Letzter Beitrag: jg
  Elemente aus Blockdiagramm von einem vi in ein anderes vi kopieren funktioniert nicht keep_smile 6 6.969 17.04.2015 11:47
Letzter Beitrag: keep_smile
  Hilfe bei globaler Variable dodiko 10 9.161 30.08.2013 16:53
Letzter Beitrag: Trinitatis
  State Machine macht mit selben Funktionen jedesmal etwas anderes anuller 6 6.577 10.04.2012 12:42
Letzter Beitrag: Lucki

Gehe zu: