LabVIEWForum.de
ToggleSwitch - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: ToggleSwitch (/Thread-ToggleSwitch)



ToggleSwitch - Claudius - 15.05.2005 12:26

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...


ToggleSwitch - Oliver Listing - 15.05.2005 12:50

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


ToggleSwitch - Claudius - 15.05.2005 14:26

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...


ToggleSwitch - Oliver Listing - 15.05.2005 19:15

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


ToggleSwitch - chiefwiegam - 16.05.2005 09:01

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


ToggleSwitch - Claudius - 17.05.2005 17:24

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?


ToggleSwitch - Oliver Listing - 18.05.2005 10:31

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