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!
ich erzeuge ein Array mit definierten Werten, die geschieht durch Einlesen einer Datei, oder durch einen definierten Algorithmus.
Lasse ich das Array durch den Algorithmus befüllen, kann ich selber bestimmen aus wieviele Zeilen das Array besteht.
Der Inhalt wird dann in einer Lokalen Variablen gespeichert.
Dieses Array wird dann in einer Registerkarte unter dem Reiter "Orginal" angezeigt.
Zusätzlich gibt es noch einen weiteren Reiter "Editieren", dabei handelt es sich aber um ein Array was ein Bedienelement ist, ich belege dieses Array jedoch durch einen Eigenschaftknoten mit den generierten Werten/ Textfile vor. Dieses Array möchte ich jederzeit editieren können.
Bei diesem VI handelt es sich um ein Sub-Vi. Je nachdem welcher Reiter aktiv ist Orginal/Editiert soll das Array eine Instanz höher weitergeben werden.
Innerhalb der while-Schleife lässt es sich auch realisieren, allerdings klappt die Übergabe (in Array Ausgabe) nicht.
Vielen Dank im Voraus
Anzeige
16.09.2011, 15:34 (Dieser Beitrag wurde zuletzt bearbeitet: 16.09.2011 15:34 von GerdW.)
du solltest dir mal ein vernünftiges Ablaufschema, notfalls auf Papier, erstellen: Was soll wann/in welcher Reihenfolge passieren.
Wenn du das hast, programmierst du dein VI neu.
Und wenn du dabei bist, lässt du die lokalen Variablen weg! Alle!
Begründung:
Es ist einfach Blödsinn, innerhalb einer Casestruktur auf die lokale Variable "Ausgabe" zu schreiben, wenn nach Abarbeiten der Casestruktur der Indicator "Ausgabe" neue Werte per Draht bekommt. Damit wird das Schreiben in die lokale Variable hinfällig...
Und wenn du damit fertig bist, wird die "Ausgabe" auch wieder funktionieren...
(19.09.2011 07:05 )beginner85 schrieb: Wie kann ich denn dann ein Bedienelement mit Werten vorbelegen?
Du schreibst das VI ist ein SubVI, viele Eingänge (wenn nicht sogar alle) werden doch sowieso vom aufrufenden VI übergeben/vorbelegt. Ansonsten verwende ich auch lokale Variablen um einen Wert in ein Bedienelement zu schreiben, aber auch nur dann, falls diese Ausgabe Sinn macht (etwa beim Initialisieren oder Ähnlichem).
Falls du das VI auf LabVIEW 2009 runterspeichern könntest, würde ich es mir mal ansehen.
habs als 2009 angehängt. Hab mittlerweile die lokalen Variablen gelöscht. Ich führe die Vorinitialisierung durch einen Eigenschaftknoten durch.
Je nachdem welcher Reiter in der Registerkarte angewählt, soll das Array an das Array was ausserhalb der Whileschleife liegt übergeben werden. Leider klappt dies nicht!!
19.09.2011, 08:20 (Dieser Beitrag wurde zuletzt bearbeitet: 19.09.2011 08:21 von M Nussbaumer.)
(19.09.2011 08:01 )beginner85 schrieb: Je nachdem welcher Reiter in der Registerkarte angewählt, soll das Array an das Array was ausserhalb der Whileschleife liegt übergeben werden. Leider klappt dies nicht!!
Falls du damit "Editiertes Pattern 3" meinst ist klar wieso es nicht klappt. Der Schleife läuft unendlich und der Ausgang wird solange nicht beschrieben bis die Schleife beendet ist -> keine Veränderung deines Ausganges!
Falls es sich bei diesem SubVI um einen Dialog handelt, welcher der Benutzer sieht würde ich dir zu einer Eventstruktur raten anstatt deiner Boolean-Rechnung.
Sollte der User dein SubVI nicht zu Gesicht bekommen würde ich dir einen Enum empfehlen um die auszuführende Aktion zu bestimmen, erhöht die Lesbarkeit und senkt die Fehlerwahrscheindlichkeit
-> guter Deal oder?
zusätzlich zu Marcs Ausführungen:
Das hier im Bild
nennt man eine RaceCondition. Was passiert wohl zuerst: das Schreiben in die PropertyNode oder das Lesen aus dem Terminal? Und ist die Reihenfolge immer die gleiche?
danke für die Antworten, das mit der Übergabe der Werte wenn die Schleife zuende ist, hab ich auch gerade gesehen. Der User sieht die Registerkarte, und die Button Generate, Load und Store.
Soll ich dann die komplette While-Schleife durch eine Eventstruktur ersetzen, oder nur den Part der Ausgabe?
danke für die Antworten, das mit der Übergabe der Werte wenn die Schleife zuende ist, hab ich auch gerade gesehen. Der User sieht die Registerkarte, und die Button Generate, Load und Store.
Soll ich dann die komplette While-Schleife durch eine Eventstruktur ersetzen, oder nur den Part der Ausgabe?
Ich würde alles durch eine Eventstruktur ersetzen, also Events für die Button-Wertveränderungen und für den Wechsel der Registerkarte. Auch würde ich einen Abbrechen/Beenden Button implementieren oder zumindest das Fensterschliess-Event unterstützen, ansonsten kannst du dein VI ja niemals beenden...
ich habe alles in eine Eventstruktur gepackt. Wenn ein Event ausgelöst wurde, dann wird die Schleife beendet und nach "außen" gegeben. Wenn ich dieses Sub-VI in mein Main-Vi packe läuft allerdings gar nix mehr.