-> Hier kostenlos registrieren
Ich habe in einem Faceplate zum Bildwechsel in einer Zustandsanzeige das folgende VBS-Script drin.
Über die Variable "Statusbits" (32 Bit UINT) möchte ich verschiedene Zustandsanzeigen abhängig vom jeweiligen Bit schalten.
Bit 0 -> Zustandsanzeige1
Bit 1 -> Zustandanzeige 2
usw.
Das Ganze funktioniert bis zum Bit 15. Ab Bit 16 schalten dann 2 Zustandsanzeigen gleichzeitig, obwohl nur ein Bit über die Bitmaske maskiert wird.
Meine Vermutung ist, dass VBS hier an der Stelle (oder auch generell) keine 32 Bit Integer kann. Liege ich hier richtig?
Über die Variable "Statusbits" (32 Bit UINT) möchte ich verschiedene Zustandsanzeigen abhängig vom jeweiligen Bit schalten.
Bit 0 -> Zustandsanzeige1
Bit 1 -> Zustandanzeige 2
usw.
Das Ganze funktioniert bis zum Bit 15. Ab Bit 16 schalten dann 2 Zustandsanzeigen gleichzeitig, obwohl nur ein Bit über die Bitmaske maskiert wird.
Meine Vermutung ist, dass VBS hier an der Stelle (oder auch generell) keine 32 Bit Integer kann. Liege ich hier richtig?
Code:
Function Index_Trigger(ByVal Item)
Dim Status
' dwStatusbits
' Bit 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
' | | | | | | | | | | | | | | | |
' | | | | | | | | | | | | | | | +-> Überlast Warnung
' | | | | | | | | | | | | | | +------> Überlast Auslösung
' | | | | | | | | | | | | | +-----------> Reserve
' | | | | | | | | | | | | +----------------> Reserve
' | | | | | | | | | | | +---------------------> Reserve
' | | | | | | | | | | +--------------------------> Reserve
' | | | | | | | | | +-------------------------------> Reserve
' | | | | | | | | +------------------------------------> Reserve
' | | | | | | | +-----------------------------------------> Reserve
' | | | | | | +----------------------------------------------> Reserve
' | | | | | +---------------------------------------------------> Reserve
' | | | | +--------------------------------------------------------> Reserve
' | | | +-------------------------------------------------------------> Reserve
' | | +------------------------------------------------------------------> Reserve
' | +-----------------------------------------------------------------------> Reserve
' +----------------------------------------------------------------------------> Reserve
'
' Bit 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
' | | | | | | | | | | | | | | | |
' | | | | | | | | | | | | | | | +-> Leistungsschalter EIN
' | | | | | | | | | | | | | | +------> Leistungsschalter AUS
' | | | | | | | | | | | | | +-----------> Leistungsschalter Betriebsstellung
' | | | | | | | | | | | | +----------------> Leistungsschalter Teststellung
' | | | | | | | | | | | +---------------------> Erdungsschalter EIN
' | | | | | | | | | | +--------------------------> Erdungsschalter AUS
' | | | | | | | | | +-------------------------------> Schutzauslösung
' | | | | | | | | +------------------------------------> Automatenfall
' | | | | | | | +-----------------------------------------> Trafoschutz Warnung
' | | | | | | +----------------------------------------------> Trafoschutz Auslösung
' | | | | | +---------------------------------------------------> Umschalter ORT
' | | | | +--------------------------------------------------------> Umschalter FERN
' | | | +-------------------------------------------------------------> I> Auslösung
' | | +------------------------------------------------------------------> I>> Auslösung
' | +-----------------------------------------------------------------------> IE> Vorwärts
' +----------------------------------------------------------------------------> IE> Rückwärts
'
Const BitMask = &H00010000 '<-- Bit 16 soll ausmaskiert werden Klappt nicht :-(
Status = SmartTags("Statusbits") And BitMask
If Status Then
Index_Trigger = 2
Else
Index_Trigger = 0
End If
End Function