xor Verknupfungen
7. Apr 2022, 15:18
An alle Delphi User die sich mit xor Verknupfungen auskennen.
zunächst muss ich mal diesen Satz in Delphi umsetzen.
Im LOCONET Protokol steht das
Die Daten-Bytes auf dem LocoNet® sind als 8-Bit-Daten definiert, die mit dem als letztes Bit im Oktett übertragenen höchstwertigen Bit (ms) eine Befehlscode-Markierung (OPCODE) erhalten. Wenn das ms-Bit (D7) 1 ist, werden die 7 geringwertigeren Bits als Netzwerk-OPCODE interpretiert. Dieses OPCODE-Byte ist immner nur einmal in einer gültigen Nachricht enthalten und ist das erste Byte einer Nachricht. In allen überigen Bytes der Nachricht muss inklusive des letzten Prüfsummenbytes (CHECKSUM) das höchstwertige Bit auf 0 gesetzt sein. Die CHECKSUM ist das Einer-COMPLEMENT eines Exclusiv-Oder über alle Bytes der Nachricht, außer der CHECKSUM selbst. Um die Datengenauigkeit zu prüfen, sind alle Bytes einer korrekten Nachricht exclusiv-oder-verknüpft. Wenn der resultierende Wert hexadezimal “FF” ist, werden die Daten als richtig akzeptiert.
mein Versuch
Dieses OPCODE-Byte ist immner nur einmal in einer gültigen Nachricht enthalten und ist das erste Byte einer Nachricht.
OPCODE 0x83 also z.B.
OPCODE ; Byte;
OPCODE := 130; //0x83
Die CHECKSUM ist das Einer-COMPLEMENT eines Exclusiv-Oder über alle Bytes der Nachricht
CheckByte ,Checksum : Byte;
CheckByte := $00;
Checksum := OPC_GPON xor CheckByte;
Senden
InterfacePort.WriteStr(Chr(OPCODE )+Chr(Checksum));
|