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!
25.09.2009, 09:58 (Dieser Beitrag wurde zuletzt bearbeitet: 25.09.2009 10:01 von gfzk.)
ich möchte auf Tastendruck eine Messung in einem VI starten. Dazu habe ich das SubVi, dass für die Messung zuständig ist den True Case gelegt. Die Messdaten sollen in ein Array ausserhalb des Case übertragen werden. Was aber mache ich im False Fall, der Ausgang muss ja auch in diesem definiert sein, aber ich will die Werte ja nicht überschreiben die in True entstanden sind.
Gruß,
gfzk
Anzeige
25.09.2009, 10:03 (Dieser Beitrag wurde zuletzt bearbeitet: 25.09.2009 10:04 von schrotti.)
z.B.:
Leg das Array das aus dem True Case kommt in ein Shiftregister und verbinde das linke Shiftregister durch den False Case mit dem Rechten. Im True Case hängst du dann mit "in Array einfügen" die neuen Werte and das alte Array an.
Initialisieren des Shiftregisters mit einem leeren Array, wenn du vorher weißt wie groß das Array wird, das Array zuerst initialisieren, und statt "in Array einfügen" "Teilarray ersetzten" benutzen.
Gruß SeBa
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Verwende anstelle der Casestruktur eine Eventstruktur die wartet, bis du den Button gedrückt hast. Das erspart dir nicht nur die Gedanken um den Falsecase sondern schont auch noch deine CPU, weil das Programm nur dann arbeitet, wenn auch was passieren soll. Momentan würde im Falsecase ja einfach nur jede Millisekunde ein Schleifendurchlauf ohne Funktion und Sinn durchlaufen werden.
Sehr löblich, dass du ein wait in deine Schleife eingebaut hast.
LG
Torsten
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" (Konrad Zuse)
Danke für die schnellen Antworten, das mit dem Schieberegister ist mir einfach nicht eingefallen.
@cabua: das funktioniert leider garnicht, denn der Schalter liefert ja nicht nur ein True sonder auch ein False:
Fehlermeldung:
Eine Case-Struktur muss für jede mögliche Auswahl einen Case haben. Das kann ganz einfach durch Erstellen eines Standard-Cases oder durch Cases mit Wertebereichen von oder bis Unendlich erreicht werden.
' schrieb:Danke für die schnellen Antworten, das mit dem Schieberegister ist mir einfach nicht eingefallen.
Muß Dir auch nicht, denn es gibt für fast jedes Schieberegistes als Alternative die Verwendung von lokalen Variablen. Das Programm dauert dann 1 Mikrosekunde länger als mit Schieberegister, dafür wird aber weniger Draht im BD verbraucht. Hier die Gegenüberstellung:
Edit: Mir ist, wenn man schon lokale Variable verwendet, noch eine Lösung mit noch weniger Drahtverhau im BD eingefallen. (Die False Case bleiben hier einfach leer):
28.09.2009, 07:12 (Dieser Beitrag wurde zuletzt bearbeitet: 28.09.2009 07:13 von abrissbirne.)
' schrieb:Muß Dir auch nicht, denn es gibt für fast jedes Schieberegistes als Alternative die Verwendung von lokalen Variablen. Das Programm dauert dann 1 Mikrosekunde länger als mit Schieberegister, dafür wird aber weniger Draht im BD verbraucht. Hier die Gegenüberstellung:
[attachment=49569:Falsecase.png]
Edit: Mir ist, wenn man schon lokale Variable verwendet, noch eine Lösung mit noch weniger Drahtverhau im BD eingefallen. (Die False Case bleiben hier einfach leer):
[attachment=49573:Fc2.png]
Diese Art der Programmierung widerspricht allerdings dem LV Grundgedanken der datneflussorientierten Programmierung, da lokale Variablen Sprunkbefehle repräsentieren. Datenfluss bedeutet nunmal auch einige Drähte im BD.