Registriert seit: 3. Aug 2021
Ort: Erfurt
41 Beiträge
Delphi 11 Alexandria
|
AW: Umkonvertieren von hex Daten und in Variablen speichern.
18. Aug 2023, 14: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
|
|
Zitat
|