Thema: Delphi IEEE-Float to Real

Einzelnen Beitrag anzeigen

Domino

Registriert seit: 7. Okt 2003
6 Beiträge
 
#7

Re: IEEE-Float to Real

  Alt 7. Okt 2003, 21:40
Hatte das gleiche Problem.
Wichtig hierbei ist zu beachten, dass die S7-Steuerung die Bytes in umgekehrter Reihenfolge ausgibt. Um daraus eine single-Zahl zu erhalten, musst Du die Reihenfolge der 4 Bytes umdrehen!

Hier ein Auszug zum Umwandeln von 4 eingelesenen Bytes in eine single-Variable.

var
buffer : array[0..3] of byte; //Hierin sind die 4 Byte einzulesen
abData : array[0..3] of byte;
rData : single;
begin
// Routine zum Einlesen der 4 Byte von der S7-Steuerung in buffer ...
// beispielsweise mit der Funktion d_field_read ...
//

(************************************************* ******************)
(* Die S7-Steuerung gibt die Bytes in umgekehrter Reihenfolge aus! *)
(************************************************* ******************)

// zunächst Reihenfolge der 4 Byte vertauschen
for i := 0 to 3 do
abData[i] := buffer[3-i];

//Umwandeln der 4 Byte in in single-Variable
CopyMemory(@rData, @abData, 4); //Windows-Funktion, siehe Hilfe Windows SDK

//das wars ..
end;
  Mit Zitat antworten Zitat