AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

xor Verknupfungen

Ein Thema von js747a · begonnen am 7. Apr 2022 · letzter Beitrag vom 13. Apr 2022
Antwort Antwort
js747a

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

AW: xor Verknupfungen

  Alt 9. Apr 2022, 13: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
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: xor Verknupfungen

  Alt 9. Apr 2022, 21:05
Aber wie kann ich das ohne die TByte machen
Gar nicht. Aber definiere es einfach selbst und fertig ist.
Delphi-Quellcode:
type
  TBytes = array of Byte;
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Kurt Wallander

Registriert seit: 11. Mai 2020
Ort: Freiberg
35 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: xor Verknupfungen

  Alt 13. Apr 2022, 12:04
Hi
ich habe zu deinem Problem ein paar Fragen. Wieviel Byte umfaßt ein Datentransfer?
die dezimale Darstellung von 0x83 ist 131 anstatt 130.
Ein Checkbyte mit 0x00 zu belegen und ein anderes Byte (OP...) mit xor Checkbyte zu verknüpfen macht keinen Sinn: es kommt als Ergebnis wieder OP... heraus.
Du mußt also Byte1 xor Byte2 xor Byte3 ... bilden.
Falls das höherwertige bit des Bytex den wert 1 hat (Bytex>=128 oder Bytex>=0x80) sollen nur die niederwertigen Bytes berücksichtigt werden: Bytex and 0x7F bzw Bytex and 127.
Die Checksumme ist zum Schluß bitweise zu negieren: CheckSum:= not (Ergebnis aller xor-Verknüpfungen)
Good luck
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz