Autor Thema: Umrechnung empfangene Bytes in Dezimal Zahlen  (Gelesen 3069 mal)

Offline Adam

  • Developer
  • Full Member
  • ****
  • Beiträge: 376
Umrechnung empfangene Bytes in Dezimal Zahlen
« am: 09 Februar 2014, 00:37:53 »
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


Offline ChrisD

  • Sr. Member
  • ****
  • Beiträge: 957
Antw:Umrechnung empfangene Bytes in Dezimal Zahlen
« Antwort #1 am: 09 Februar 2014, 15:08:22 »
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




Offline Adam

  • Developer
  • Full Member
  • ****
  • Beiträge: 376
Antw:Umrechnung empfangene Bytes in Dezimal Zahlen
« Antwort #2 am: 10 Februar 2014, 07:50:29 »
Danke für den Tipp, werde es heute Abend mal testen!
Adam

 

decade-submarginal