Bytes 2 Real ?

K-SYSTEM-D

Level-1
Beiträge
51
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich versuch seit ein paar tagen Daten von einem Wechselrichter zu lesen, leider funktioniert meine
Umwandlung von Bytes zu Real nicht, eventuell könntet ihr mir da helfen.


Auf folgender Seite gibt es

http://michael-peeters.blogspot.de/2009/05/using-sunny-beam-under-linux-first.html

dieses Beispiel

ae 47 65 41 = E-Total (floating point 14.3 Kwh)

Irgendwie bekomm ich es nicht hin die 14.3 Kwh rauszubekommen.


hier mein Ansatz:
FUNCTION Bytes2Real : REAL
VAR_INPUT
Byte1:BYTE;
Byte2:BYTE;
Byte3:BYTE;
Byte4:BYTE;
END_VAR
VAR
pt: POINTER TO BYTE;(*Hier lag der Fehler*)
END_VAR


und der Code dazu:

pt := ADR (Bytes2Real);
pt^ := Byte1;
pt := (pt + 1);
pt^ := Byte2;
pt := (pt +1);
pt^ := Byte3;
pt := (pt +1);
pt^ := Byte4;

Ich danke euch im voraus.

Gruß
 
... sollte so funktionieren...

Code:
FUNCTION BYTES_TO_REAL : REAL
VAR_INPUT
 b_byte1     :BYTE;
 b_byte2     :BYTE;
 b_byte3     :BYTE;
 b_byte4     :BYTE;
END_VAR
VAR
 x        :DWORD;
 pt        :POINTER TO REAL;
END_VAR

x :=SHL((BYTE_TO_DWORD (b_byte4)),24) OR SHL((BYTE_TO_DWORD (b_byte3)),16) OR SHL((BYTE_TO_DWORD (b_byte2)),8) OR (BYTE_TO_DWORD (b_byte1));
pt := ADR(x);
BYTES_TO_REAL := pt^;


mfG Jan
 
Zurück
Oben