Hallo,
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
Ich habe deine Frage dreimal gelesen und verstehe dein Problem beim bestem Willen nicht. Zum Rätselraten fehlt mir auch die Lust.
Esit: Ah,jetzt ist ein Bild dabei. Die Antwort lautet Schieberegister.
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
Case False einfach löschen.
Rechte Mausstaste drauf - Delete This Case.
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
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.
Gruß, gfzk
TSchAC:
das ist natürlich noch eleganter!
Die 1ms Verzögerung ist das Wenige, dass ich aus der LabVIEW Vorlesung noch weiss

' schrieb:..
Die 1ms Verzögerung ist das Wenige, dass ich aus der LabVIEW Vorlesung noch weiss 
..
Nicht das Schlechteste, was du dir da behalten hast. :-)
' 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:
[
attachment=21456]
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=21450]
' 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.