Umrechnung empfangene Bytes in Dezimal Zahlen

Begonnen von Adam, 09 Februar 2014, 00:37:53

Vorheriges Thema - Nächstes Thema

Adam

Hallo ich bräuchte ein bisschen Unterstützung bei der Umrechnung von Bytes.
(Hintergrund Auslesen einer Viessmann Heizung über serielle Schnittstelle)

Ich empfange über die Serielle Schnittstelle die folgenden Bytes
und weiss auch auf Grund eines externen C Programms welche Dezimalwerte sie bedeuten.

Nur wie kann ich dies in einem Fhem Perl Modul am besten umrechnen?
Und gibt es da Abhängigkeiten, ob ich auf Windows oder Linux unterwegs bin?

1)
my $hexline = unpack('H*', $mybuf);

Empfangen: B2 57 7E 00
Dezimalwert: 8279.986

Müsste ja so was wie 007E57B2 (also umdrehen) in Dezimal umwandeln und dann durch 1000
Wie bildet man das am besten über $mybuf also die rawmsg oder die $hexline (entpackt) in perl ab?

2)
Empfangen: 63 00         -> HEX 0063 -> Dezimal 99
Dezimalwert: 9.9

Müsste ja so was wie 0063 (also umdrehen) in Dezimal umwandeln und dann durch 10

Ich hoffe es hat jemand mehr Erfahrung als Ich und kann mir helfen.
Wichtig wäre mir auch ob ich dann was berücksichtigen muss, wenn die Bytes an einem Linux System empfangen werden?
Ich empfange Sie an einem Windows System!

Danke schon mal!
Adam


ChrisD

Hallo,

Zum Umwandeln sollte dies gehen:
my $val=unpack('V',$mybuf)/1000.0;
und
my $val=unpack('v',$mybuf)/10.0;

Das Betriebssystem spielt dabei keine Rolle.

Grüße,

ChrisD




Adam

Danke für den Tipp, werde es heute Abend mal testen!
Adam