Einzelnen Beitrag anzeigen

js747a

Registriert seit: 11. Aug 2008
Ort: Nord hessen
43 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: xor Verknupfungen

  Alt 9. Apr 2022, 14:37
Hallo, erstmal Danke für die Antworten.
Aber wie kann ich das ohne die TByte machen.
In Delphi 7



function BuildCommand(ACommand: Byte; AData: const array of Byte): TBytes;
var
CheckSum, B: Byte;
begin
SetLength(Result, 2 + Length(AData));
CheckSum := ACommand;
Result[0] := ACommand;
for var n := 0 to High(AData) do
begin
B := AData[n];
CheckSum := CheckSum xor B;
Result[1 + n] := B;
end;
Checksum := CheckSum xor $FF;
Result[High(Result)] := CheckSum;
end;

Wenn ich das Richtig verstehe dann ..


wenn ich nur 2 Byte sende.

Ein TByte ist also ein Array of Bytes.
- CheckSum := ACommand; ist OPCODE 0x83
- Result[0] := ACommand; ist das erste im Array also bei mit OPCODE 0x83
- Checksum := CheckSum xor $FF;
- Result[1] := Checksum ;
InterfacePort.WriteStr(Chr(Result[0])+Chr(Result[1]));


wenn ich mehr als 2 Byte sende.

- CheckSum := ACommand; ist OPCODE 0x83
- Result[0] := ACommand; ist das erste im Array also bei mit OPCODE 0x83

dann wird für jedes Byte in AData
- B = n Byte in AData
- CheckSum := CheckSum xor B;
- Result[n] = B

- Checksum := CheckSum xor $FF;
- Result[High(Result)] := CheckSum; - Letzte Byte in Result := CheckSum
InterfacePort.WriteStr(Chr(Result[0])+Chr(Result[n])+Chr(Result[n]));
  Mit Zitat antworten Zitat