FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: laserrichi am 13 Juli 2021, 13:03:32

Titel: Perl Variable einzelbit Auswertung
Beitrag von: laserrichi am 13 Juli 2021, 13:03:32
Ich versuche mich gerade ein wenig In Perl und möchte aus einem Reading (also gefüllte Variable) einzelne Bit zustände auslesen.
Ein ausgelesenes Reading zerlege ich mit einem unpack B16 da ich hier einzelne bits über diverse Statis bekomme.

Beispiel:


Die Variable mal gefüllt:
$a=0b1000000000011011;

jetzt möchte ich einzelne Bits haben:
$Running = printf(substr($a,15,1));

und hier z.b. die 2 vorletzten Bits die nächsten
$ChrStatus = sprintf("%2b",substr($a,12,2));

aber.... das dumme ist, das ich eigentlich in der Variable $a genaugenommen keine bits habe sondern 32795  als wert, und beim sprintf  ich das nicht bitweise habe.

auch als array funktioniert das so nicht:
@array = split(//,$a,);


Soweit ich das sehe gibt es bei Perl ja nicht die fixe formatierung von Variablen, aber ich kann sie so auch irgendwie nicht zerlegen.
Irgendwie hab ich hier einen denkfehler oder es geht einfach so nicht.
Titel: Antw:Perl Variable einzelbit Auswertung
Beitrag von: Nobbynews am 13 Juli 2021, 13:43:21
Zitat von: laserrichi am 13 Juli 2021, 13:03:32
über diverse Statis bekomme.
Da rollen sich mir beim Lesen die Zehennägel auf.....

Aber vielleicht hilft das hier weiter:
https://forum.fhem.de/index.php?topic=65048.0 (https://forum.fhem.de/index.php?topic=65048.0)
Titel: Antw:Perl Variable einzelbit Auswertung
Beitrag von: laserrichi am 26 Juli 2021, 13:14:54
mal die Nägel schneiden ;-)  ja... ich weis.....  Status   Stati .... Mehrzahl gemeint

Die Lösung ist das maskieren wie in dem andern Thread am Ende als Beispiel enthalten ist.
Titel: Antw:Perl Variable einzelbit Auswertung
Beitrag von: marvin78 am 26 Juli 2021, 14:47:33
Sorry, ich kann nicht anders. Die Mehrzahl von Status ist Status!
Titel: Antw:Perl Variable einzelbit Auswertung
Beitrag von: Icinger am 26 Juli 2021, 17:19:10
ZitatDie Mehrzahl von Status ist Status!

Und ich dachte, das sind die Statussis ^^