Einzelnen Beitrag anzeigen

Benutzerbild von arcticwolf
arcticwolf

Registriert seit: 3. Aug 2021
Ort: Erfurt
41 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Umkonvertieren von hex Daten und in Variablen speichern.

  Alt 18. Aug 2023, 13:00
Ich würde das mit einem Record lösen in welches die Daten von der seriellen Schnittstelle geschrieben oder kopiert werden.

Delphi-Quellcode:
program SerialData;

{$APPTYPE CONSOLE}

uses
  System.SysUtils;

Const Data : Array [0..7] of Byte = ($55, $AA, $01, $82, $85, $13, $1A, $F0);

Type tMyRec = Record
     private
       Header : Word;
       Kanal : Byte;
       Befehl : Byte;
       Data : Array [1..4] of Byte;
     public
       Function Wert : Integer;
       Function Status : Byte;
     End;

Var MyRec : tMyRec;

function tMyRec.Status: Byte;
begin
  Result := (Data[3] div 16) shl 4;
end;

function tMyRec.Wert: Integer;
Var Value : Word;
begin
  Result := ((Data[3] mod 16) shl 16)
          + (Data[2] shl 8)
          + Data[1];
end;

begin
  Move(Data[0], MyRec, 8);
  Writeln('Header : ',MyRec.Header:6,' = $',MyRec.Header.ToHexString);
  Writeln('Kanal : ',MyRec.Kanal:6 ,' = $',MyRec.Kanal.ToHexString);
  Writeln('Befehl : ',MyRec.Befehl:6,' = $',MyRec.Befehl.ToHexString);
  Writeln('Status : ',MyRec.Status:6,' = $',MyRec.Status.ToHexString);
  Writeln('Wert : ',MyRec.Wert:6 ,' = $',MyRec.Wert.ToHexString);
  Readln;
end.
Das Ergebnis wäre dann wie folgt:

Code:
Header : 43605 = $AA55
Kanal :     1 = $01
Befehl :   130 = $82
Status :    16 = $10
Wert  : 660357 = $000A1385
Wolfgang
coding is an art - code for people not for machines
  Mit Zitat antworten Zitat