LabVIEWForum.de - ToggleSwitch

LabVIEWForum.de

Normale Version: ToggleSwitch
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich stehe - mal wieder - vor einem Problem:

Ich habe auf meinem Front Panel einen ToggleSwitch. Wenn ich jetzt den Schalter umlege, bringt er mir immer "True" zurrück. Den Schalterwert habe ich mit einer Case-Struktur verbunden.
Das Problem: Der Inhalt der Case-Struktur wird permanent aufgerufen. Er soll aber nur einmal aufgerufen werden.

Also:

[Schalter umlegen] -> einmal den "True" Inhalt der Case-Struktur ausführen.
[Schalter umlegen] -> einmal den "False" Inhalt der Case-Struktur ausführen.

Wie schaffe ich das?

Danke.

PS: In den Properties des Switches stehen unter "Operation" ein paar Optionen. Meine Ist aber nicht dabei...
Hi Claudius,

was du benötigst, ist eine "Flankensteuerung".
Du findest diese Funktion unter:
FunctionsAnalyzePoint by PointOther Functions PtByPtBoolean Crossing PtByPt.vi

Da du ja noch LV-Einsteiger bist:
Schau auch gerne mal in das VI hinein und "versuche" das VI zu verstehen.
Wichtig hierbei ist:
Ein Shift-Register, welches nicht initialisiert ist, liefert beim nächsten aufruf das letzte Ergebnis am Eingang.

viel Spaß
Oliver
mmh. ich blicke jetzt grade gar nicht durch.
Hat jemand zufällig lust ein Beispiel VI zu schicken oder hat noch ein altes VI indem er das verwendet?

In Programmierhochsprachen mache ich das immer mit einer buffer-Variable, die ich invertiere, wenn die Prozedur das erste mal aufgerufen wird. Danach prüfe ich einfach, ob die Var invertiert ist oder nicht.

Aber Variablen, die man während der Laufzeit ändern kann, gibt es in LabVIEW nicht, oder? Ich habe nur eine "local Variable" gefunden, aber der kann ich irgedwie keinen Wert zuweisen...
Hi Claudius,

richtig, nur das du die Buffervariable nicht siehst.
Sie wird in dem VI Boolean Crossing PtByPt.vi erzeugt, aktualisiert und abgefragt.
Sie versteckt sich in dem Shift Register, welches an der While-Schleife "hängt".

Lokale und Globale Variablen verwende ich prinzipiell nicht. Komme auch so aus... Wink

Gruß
Oliver
hi,
mit einem eventcase funktioniert es auch. eifach den case innerhalb der event-struktur. die enventsruktur kommt in den loop.

der event musst du so einstellen, das er bei "value change" des schalters deinen case ausführt.

g markus
Danke ersteinmal für die Hilfe.

Ich habe jetzt mal eine kleine Demo Anwendung mit der Flankensteuerung gemacht. Dabei ist mir aber aufgefallen, dass ich immer nur eine Flanke benutzen kann.
Sobald ich mehr als eine Flanke benutze, spielt das ganze verrückt.

Ich glaube mitlerweile, dass die beste Möglichkeit um das Problem zu lösen, tatsächlich Variablen sind. Wie geht man mit denen unter LV um?

...Oder fällt jemand noch eine bessere Strategie ein?
Hi Claudius,

ich denke eher da hat deine Demo noch einen kleinen Bug...
Stell sie doch mal ein, dann werfen wir einen Blick drauf.

Gruß
Oliver
Referenz-URLs