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!
08.10.2008, 15:26 (Dieser Beitrag wurde zuletzt bearbeitet: 08.10.2008 20:12 von jg.)
Ich lese über ein SubVi IP_Adressen aus einem txt file. Das VI funktioniert auch. Aus diesem VI übergebe ich ein String_Array (welches die ausgelesenden Ip´s liefert) und einen Index (welcher die Anzahl der IP-Adressen, die in der Datei sind, liefert)
soweit sogut...
Problem:
Belege ich nun beide mit einem Anschluss, werden beide immer auf 0 gesetzt. D.h das VI wird ordnungsgemäß ausgeführt und abgearbeitet. Dann allerdings werden die Werte im Array und im Index auf 0 gesetzt.
Wenn ich z.b das Array vorher noch kopiere, behät das kopierte Array die Werte aber nicht das Array was ich übergeben will. (für den Index ebenso)
Woran liegt das?
Evt. daran wie ich das VI aufgebaut habe? Wenn ja, bitte ich um einen Tip.
Ich hab jetzt nicht so ganz verstanden, wo dein Problem liegt. Auch nach Durchsicht des Sourcecodes nicht. Aber eine Lösung, naja einen Ansatz dafür, hab ich trotzdem.
' schrieb:Evt. daran wie ich das VI aufgebaut habe?
Ja.
Wenn ich das BD richtig interpretiert habe, kommst du vollkommen ohne jedwede Lokale Variable aus. Es geht alles alleine nur mit Datenfluß. Auch die Sequenzstrukturen brauchst du nicht. Versuch mal, das BD so anzupassen, dass alles von links nach rechts "fließt". Allerdings brauchst du dann noch eine While-Schleife um alles herum, die auch nocht Schieberegister enthält. Darin stehen dann die Werte, die von einem VI-Aufruf zum nächsten erhalten bleiben sollen bzw. müssen.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
08.10.2008, 17:13 (Dieser Beitrag wurde zuletzt bearbeitet: 08.10.2008 17:13 von eg.)
Ich erkläre es so wie ich es verstehe:
wenn du die Ausgänge im Pane definiert hast, macht LabVIEW automatisch eine unsichtbare Verbindung vom Indicator im Blockdiagramm zum VI Ausgang. Diese unsichtbare Verbindung geht vom Indicator zum Pane Ausgang dirch alle möglichen Strukturen durch. Sagen wir mal, dass VI Pane Ausgang ausserhalb aller Strukturen liegt. Da ich gesagt habe, dass du deine Ausgänge ausserhalb der Strukturen legen musst, habe ich dich gezwungen, so zu denken wie es in LabVIEW ist.
Dein Fehler war, dass du gedacht hast, dass was im Indicator auf dem FP angezeigt wird, wird auch vom VI ausgegeben, in Wirklichkeit sind die Ausgänge so wie oben beschrieben verbunden.
Am besten, nimm es als Regel - alle VI Ausgänge ausserhalb von etwaigen Strukturen zu platzieren, dann wirst du solche Verständnisprobleme nicht haben.
' schrieb:Ich erkläre es so wie ich es verstehe:
wenn du die Ausgänge im Pane definiert hast, macht LabVIEW automatisch eine unsichtbare Verbindung vom Indicator im Blockdiagramm zum VI Ausgang. Diese unsichtbare Verbindung geht vom Indicator zum Pane Ausgang dirch alle möglichen Strukturen durch. Sagen wir mal, dass VI Pane Ausgang ausserhalb aller Strukturen liegt. Da ich gesagt habe, dass du deine Ausgänge ausserhalb der Strukturen legen musst, habe ich dich gezwungen, so zu denken wie es in LabVIEW ist.
Dein Fehler war, dass du gedacht hast, dass was im Indicator auf dem FP angezeigt wird, wird auch vom VI ausgegeben, in Wirklichkeit sind die Ausgänge so wie oben beschrieben verbunden.
Am besten, nimm es als Regel - alle VI Ausgänge ausserhalb von etwaigen Strukturen zu platzieren, dann wirst du solche Verständnisprobleme nicht haben.
Hier ein Beispiel: oben VI unten SubVI.
hmm.... Danke.
So richtig gecheckt habe ich es zwar noch nicht. Aber nun weiss ich es und werde es berücksichtigen.
Anzeige
09.10.2008, 09:50 (Dieser Beitrag wurde zuletzt bearbeitet: 09.10.2008 09:51 von Lucki.)
Ob innerhalb oder außerhalb von Strukturen ist doch egal, Haupsache ist, daß, wenn in der Struktur Cases o.ä. vorkommen, in jedem möglichen Fall trotzdem eine Wertzuweisung erfolgt. Und genau das ist bei Dir nicht der Fall.
Die Wertzuweisung in das Ausgangsarray im Inneren der verschachtelten Struktur erfolgt nur dann, wenn die Cases beide true sind, sonst nicht:
Habs mal geändert, und zwar so, daß (i) durch Anfangsinitialisierung immer ein Wert (NaN) zugewiesen wird, und (ii) eine Debug-Meldung erscheint, wenn die Cases nicht so sind wie sie sein sollten.
Mehr kann man hier nicht tun, denn was mit den Ausgängen geschehen soll, wenn die Cases nicht true sind, das weißt allein Du. Aber einfach nichts zuzuweisen ist auf jeden Fall nicht die feine Art..