# Bit aus byte lesen WinCC Flex



## JensCS (11 April 2008)

Hallo
Ich habe unter WinCC flexible  eine interne Byte Variable angelegt und möchte jetzt in einem Skript aus diesem Byte ein Bit auslesen.
Es gibt zwar die Funktion "SetBitinTag" aber "GetBitinTag" gibt es nicht.

Wie kann ich das machen??


----------



## tiefflieger (11 April 2008)

... probiers mal mit der Systemfunktion "Schieben und Maskieren".
Kannst übrigens auch im Script verwenden.


----------



## JensCS (11 April 2008)

Danke für den Tip.
Ich will aber dieses bit nur für eine if Abfrage nutzen.

also if "Bit 5 aus Variable(Byte)" then Aktion

Ich habe schon drüber nachgedacht mir eine Boolsche variable mit 8 Arrays anzulegen und dann die einzelnen arrays zu lesen.
Dann muss ich nur mein Byte in die arrays schieben.


----------



## Kai (11 April 2008)

Mit dem folgendem VBScript kannst Du aus einem BYTE die einzelnen BITS auslesen:


```
'Aus einem BYTE die einzelnen BITS auslesen
 
'BIT 0 auslesen
 
If (Variable_BYTE And 2^0) <> 0 Then
    Variable_BIT_0 = 1
Else
    Variable_BIT_0 = 0
End If
 
'BIT 1 auslesen
 
If (Variable_BYTE And 2^1) <> 0 Then
    Variable_BIT_1 = 1
Else
    Variable_BIT_1 = 0
End If
 
'BIT 2 auslesen
 
If (Variable_BYTE And 2^2) <> 0 Then
    Variable_BIT_2 = 1
Else
    Variable_BIT_2 = 0
End If
 
'BIT 3 auslesen
 
If (Variable_BYTE And 2^3) <> 0 Then
    Variable_BIT_3 = 1
Else
    Variable_BIT_3 = 0
End If
 
'BIT 4 auslesen
 
If (Variable_BYTE And 2^4) <> 0 Then
    Variable_BIT_4 = 1
Else
    Variable_BIT_4 = 0
End If
 
'BIT 5 auslesen
 
If (Variable_BYTE And 2^5) <> 0 Then
    Variable_BIT_5 = 1
Else
    Variable_BIT_5 = 0
End If
 
'BIT 6 auslesen
 
If (Variable_BYTE And 2^6) <> 0 Then
    Variable_BIT_6 = 1
Else
    Variable_BIT_6 = 0
End If
 
'BIT 7 auslesen
 
If (Variable_BYTE And 2^7) <> 0 Then
    Variable_BIT_7 = 1
Else
    Variable_BIT_7 = 0
End If
```
 
Gruß Kai


----------



## Kai (12 April 2008)

Das VBScript geht auch noch etwas kürzer:


```
'Aus einem BYTE die einzelnen BITS auslesen
 
'BIT 0 auslesen
 
If Variable_BYTE And 2^0 Then
    Variable_BIT_0 = 1
Else
    Variable_BIT_0 = 0
End If
 
'BIT 1 auslesen
 
If Variable_BYTE And 2^1 Then
    Variable_BIT_1 = 1
Else
    Variable_BIT_1 = 0
End If
 
'BIT 2 auslesen
 
If Variable_BYTE And 2^2 Then
    Variable_BIT_2 = 1
Else
    Variable_BIT_2 = 0
End If
 
'BIT 3 auslesen
 
If Variable_BYTE And 2^3 Then
    Variable_BIT_3 = 1
Else
    Variable_BIT_3 = 0
End If
 
'BIT 4 auslesen
 
If Variable_BYTE And 2^4 Then
    Variable_BIT_4 = 1
Else
    Variable_BIT_4 = 0
End If
 
'BIT 5 auslesen
 
If Variable_BYTE And 2^5 Then
    Variable_BIT_5 = 1
Else
    Variable_BIT_5 = 0
End If
 
'BIT 6 auslesen
 
If Variable_BYTE And 2^6 Then
    Variable_BIT_6 = 1
Else
    Variable_BIT_6 = 0
End If
 
'BIT 7 auslesen
 
If Variable_BYTE And 2^7 Then
    Variable_BIT_7 = 1
Else
    Variable_BIT_7 = 0
End If
```
 
Gruß Kai


----------



## JensCS (14 April 2008)

Vielen dank für den Hinweis.
Ist ja eigentlich ziemlich simpel.

Das spart mir eine Menge Variablen


----------

