Besonderer Schalter

  • Ich habe aktuell ein Problem bei der Umsetzung eines eher seltenen Schalters/ Tasters. Das Vorbild hat an dieser stelle folgende Stellungen:

    Position: Eigenschaft
    2 No Springload
    1 Springload
    0 Default Position
    -1 Springload

    Jetzt die Frage: Hat jemand eine Idee, wie man dies am besten umsetzt? Eine Lösung für -1, 0 und 1 mit Springload gibt es ja schon, aber wie kann man es umsetzen, das der Schalter auch noch in 2 schaltet. (2x Plus Event geht ja nicht, wegen des Springloads würde er aus Pos=1 wieder zurück springen)

    Ja äh, hier irgendwas mit Dingen und so...

  • Also, da sind Deiner Phantasie keine Grenzen gesetzt! :-D


    In einem Fall, wo es keine "-1-Stellung" gab, habe ich einfach zwei Events definiert; Linksklick ging in Position 1 und Rechtsklick in Position 2 (oder umgekehrt, kommt ein bisschen darauf an, was man seltener macht oder auf die Geometrie des Schalters). Durch Deine -1-Position wird es natürlich kniffliger... Demnächst werde ich einen sehr ähnlichen Fall haben, nämlich SL - SL - Neutral - SL. Da werde ich vermutlich einfach die "innere" SL-Stellung in eine rastbare Stellung umwandeln, weil es in meinem Fall einfach ein Sicherheitsaspekt ist, dass die innere Stellung federnd ist.


    Mit der Tastatur ist man natürlich flexibler: Falls Du also auf eine Klickbarkeit verzichten kannst/willst, dann weist Du einfach drei Events zu. Oder der User muss den Schalter/Taster per Drag-n-Drop bewegen, das wäre auch noch denkbar, ist aber für Scripter und User relativ umständlich und nur für Notfälle zu empfehlen.

  • Bei sowas führen ja viele Wege zum Erfolg.

    Meine Herangehensweise wäre die Auswertung der Event-Flanken mit Timern. Je nach Anwendungsfall also Position 2 mittels Doppelbetätigung innerhalb von z.B. einer halben Sekunde oder das Gegenteil, dass durch das Betätigen des Tasters auf Position 1 geschaltet wird und falls die Betätigung länger anhält als z.B. eine Sekunde, wird weiter geschaltet auf Position 2.

  • Auf die Idee bin ich auch schon gekommen, war mir aber zu aufwendig.

    Da mein aktuelle Idee aber nicht funktioniert, werde ich es vermutlich so umsetzen.

    Ich wollte eigentlich, beim auslösen von _Plus und _Minus Event gleichzeitig in Pos = 2 schalten. Geht aber leider nicht, da die Events sich gegenseitig ausstechen.


    Wie wäre es denn, wenn man für genau solche fälle den Zustand der "Shift"-Taste abfragen könnte. So im Sinne von

    ((id = 'Event') and isShift)?

    Ja äh, hier irgendwas mit Dingen und so...

  • Ich hab's noch nicht ausprobiert, aber bei den Events kann man doch neben der Event-ID auch die Flanke abfragen... wenn man schreibt

    müsste er zumindest in die zweite Position gehen... Ich weiß, dass die zweite Position damit noch nicht rastet, aber vllt. hilft dir das ja als Idee

  • Flanke ist gemeint, dass die Procedure OnButton ja sowohl beim Drücken als auch beim Loslassen der Taste aufgerufen wird. Um zu unterscheiden, ob die Taste grade gedrückt oder losgelassen wurde, wird die Richtung als value übergeben.


    Ich nenn' das Dingen Flanke, weil ich das Signal, das von der Taste kommt meine. Der Wechsel von 0 auf 1 ist die steigende Flanke, der Wechsel von 1 auf 0 die fallende Flanke.


    Weiß auch nicht wieso... Wahrscheinlich ist das noch von den Oszis in der Schule hängen geblieben...

  • Ahhhh. Jetzt macht der Code ein bisschen mehr Sinn.

    Habe den Schalter inzwischen auf einen Timer umgestellt. War zwar etwass nervig, geht aber jetzt.

    Ja äh, hier irgendwas mit Dingen und so...

  • Neu erstellte Beiträge unterliegen der Moderation und werden erst sichtbar, wenn sie durch einen Moderator geprüft und freigeschaltet wurden.

    Die letzte Antwort auf dieses Thema liegt mehr als 60 Tage zurück. Das Thema ist womöglich bereits veraltet. Bitte erstellen Sie ggf. ein neues Thema.

    Maximale Anzahl an Dateianhängen: 5
    Maximale Dateigröße: 500 kB
    Erlaubte Dateiendungen: bmp, cfg, ini, jpeg, jpg, lct, ldl, llg, lob, log, lpmtl, lptmt, ltx, pas, pdf, png, railtrack, rar, txt, veh, wav