![]() |
Werteübergabe in anderes VI mit globaler Variable - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Werteübergabe in anderes VI mit globaler Variable (/Thread-Werteuebergabe-in-anderes-VI-mit-globaler-Variable) |
Werteübergabe in anderes VI mit globaler Variable - BobbyBau91 - 27.01.2014 18:10 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: [attachment=48257] Nun gebe ich diesen COM-Port an eine globale Variable: [attachment=48258] Und hier möchte ich diesen Wert wieder abgreifen: [attachment=48256] 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 RE: Werteübergabe in anderes VI mit globaler Variable - GerdW - 27.01.2014 18:34 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: [attachment=48260] 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? RE: Werteübergabe in anderes VI mit globaler Variable - jg - 27.01.2014 18:40 Typisches Beispiel der Nichtbeachtung von Datenfluss und des Multithreading von LabVIEW. Hier nochmal das Blockdiagramm deines Start.vi: [attachment=48259] 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 ![]() EDIT: Mit DATAFLOW hat Gerd mal wieder dieselbe Idee. Keine Überraschung... EDIT 2: Für alle Nicht-Apple-User, hier ein korrigiertes Archiv: ![]() RE: Werteübergabe in anderes VI mit globaler Variable - BobbyBau91 - 27.01.2014 19:04 Danke sehr, habe mal wieder viel zu kompliziert gedacht ![]() |