... möchte ich ... dementsprechend folgende Aktionen ausführen.
Dementsprechend? Wem entsprechend?
Folgende Aktionen?
Meinst Du damit im folgenden beschriebene Aktionen?
Wo folgt denn diese Beschreibung?
Das Skript funktioniert so nicht
Dein Skript kann damit also nicht gemeint sein, denn dort steht leider nur, wie es nicht funktioniert - wie Du selbst sagst.
kann mir jemand hier behilflich sein ?
Im Prinzip gerne, aber wie erfahren wir, welches Problem geknackt werdem soll?
Ein Klick auf den Anhang führt ins Nirvana. Was soll denn passieren bzw. zum Vorschein kommen?
Der Kunde hat dieses Bild vor sich und will, dass wenn er die Schaltfläche "mit Reiniger" drückt,
"mit Waage" auch angewählt wird. Das heisst die Waage wird IMMER aktiviert bzw. deaktiviert wenn
die Schaltfläche "mit Reiniger" angewählt wird.
"... wird IMMER aktiviert bzw. deaktiviert wenn ..." - gibt Dir das nicht zu denken?
"wird immer aktiviert" ist eine klare Aussage. "wird immer deaktiviert" ist auch eine klare Aussage.
Aber "wird immer aktiviert bzw. deaktiviert" ist ein Widerspruch in sich.
Die Schaltfläche "mit Reiniger" ist mit den Funktionen InvertiereBitInVariable ... ausgestattet.
Die Schaltfläche "mit Waage" ist mit der Funktion InvertiereBitInVariable ... ausgestattet.
Aha, mit Betätigen der SchaltFläche "mit Reinger" lässt sich also die ausgeschaltete Funktion einschalten und die eingeschaltete Funktion ausschalten.
Auf NeuDeutsch "toggeln" genannt. Sinngemäss gilt dies auch für die SchaltFläche "mit Waage".
Sooo, was soll also passieren?
1. Wird "mit Reiniger" per SchaltFlächenBetätigung EINgeschaltet, so soll "mit Waage" ebenfalls EINgeschaltet werden bzw. bleiben.
2. Wird "mit Reiniger" per SchaltFlächenBetätigung AUSgeschaltet, so soll "mit Waage" ebenfalls AUSgeschaltet werden bzw. bleiben.
3. Wird "mit Waage" per SchaltFlächenBetätigung EINgeschaltet, so soll "mit Reiniger" unverändert EINgeschaltet bzw. AUSgeschaltet bleiben.
4. Wird "mit Waage" per SchaltFlächenBetätigung AUSgeschaltet, so soll "mit Reiniger" unverändert EINgeschaltet bzw. AUSgeschaltet bleiben.
Habe ich das soweit richtig verstanden?
Wenn ja, einfachste Lösung (sogar für den Bediener durchschaubar):
4 Schaltflächen "spendieren". Je 1 für ...
1. "Reiniger und Waage EIN"
2. "Reiniger und Waage AUS"
3. "Waage EIN"
4. "Waage AUS"
KompromisLösung: 3 Schaltflächen "spendieren". Je 1 für ...
1. "Reiniger und Waage EIN"
2. "Reiniger und Waage AUS"
3. "Waage EIN/AUS"
Eine Verriegelung im Sinne "...darf nicht, wenn nicht auch ..." stellt das obige ja nicht dar.
Man kann ja trotz allem - wenn auch auf Umwegen - Reiniger und Waage einzeln betreiben.
Inwieweit das ganze überhaupt sinnvoll ist, kann ich nicht beurteilen.
Ich weiss nur, dass vieles, was hier und da - gut gemeint - als "BedienKomfort" eingebaut wird, den Bediener eher verwirrt, als ihm zu helfen.
Du musst, um Deine Vorstellung umzusetzen, nicht nur den aktuellen Status des "mit Reiniger"-Bits unverändert an ausschliesslich(!) den Reiniger durchreichen,
sondern zusätzlich das "mit Reiniger"-Bit beobachten, um festzustellen, ob bzw. wann es kommt oder geht ("FlankenErkennung").
Nur in dem Moment, wenn es von 0 auf 1 wechselt ("positive Flanke"), setzt Du das "mit Waage"-Bit auf 1.
Nur in dem Moment, wenn es von 1 auf 0 wechselt ("negative Flanke"), rücksetzt (löschst) Du das "mit Waage"-Bit.
Damit die FlankenErkennung möglich wird, muss der vorherige Zustand des "mit Reiniger"-Bits verfügbar sein.
Versuch's mal mit ...
Code:
Const cBit3_AUS = -9 ' = FFF7 bit 3 löschen
Const cBit3_EIN = 8 ' = 0008 bit 3 setzen
If ((xWord And 2 ^ 6) = 2 ^ 6) And Not ((xWordOld And 2 ^ 6) = 2 ^ 6) Then ' pos. Flanke
xWord = xWord Or cBit3_EIN
ElseIf Not ((xWord And 2 ^ 6) = 2 ^ 6) And ((xWordOld And 2 ^ 6) = 2 ^ 6) Then ' neg. Flanke
xWord = xWord And cBit3_AUS
End If
xWordOld = xWord
Achtung:
-
xWordOld darf nicht anderweitig verändert werden, also an "globaler Stelle" deklarieren.
- einer Anregung aus #2 folgenden, habe ich hier die Variable "Word" in "xWord" umbenannt … da Dich "Word" nicht irritiert: mach's so, wie willst Du ;o)
- die beiden Konstanten gelten, sofern xWord und xWordOld als INTEGER deklariert sind.
Der Kunde wollte, dass sobald dieses Bild aufgerufen wird, das Bit "mit Waage" gesetzt wird.
Kein Kommentar, ausser: das solltest Du besser hinkriegen als ich.
Gruss, Heinileini