Einzelnen Beitrag anzeigen

Zer0ne

Registriert seit: 9. Apr 2018
6 Beiträge
 
#4

AW: CRC16 Problem mit Input ASCII/Hex

  Alt 9. Apr 2018, 16:39
Danke für eure Rückmeldungen.

@Sherlock:
Ich hätte erwähnen sollen, dass ich mit Lazarus und FPC programmiere. Deine Variante funktioniert hier an der Stelle so leider nicht.

@himitsu:
Zitat:
Wieso ist dein Wert 32 Bit (Int32) und keine 16 Bit?
Puh gute Frage. Habe ich mir so keine Gedanken darüber gemacht.

Zitat:
Warum wird Value bzw. crc nirgendwo initialisiert?
Sorry, die Zeile mit der Initialisierung von crc hatte ich nicht hinzugefügt:
Code:
crc        := 0;
Zitat:
Oder noch einen Parameter isHEX in deine Funktion/Prozedur
und dann statt ein Zeichen zu nehmen (Ord), jeweils zwei Zeichen nehmen, sie von Hex nach Byte umwandeln und dann damit den CRC berechnen.
Meintest du das so in etwa?
Code:
function CalcCRC2(Command: String; var Value: Int32): Integer;
var i,j : Integer;
  bytecrc : Byte;
begin
  Result := 0;
  for i:=Start to Length(Command) div 2 do
  begin
    bytecrc := HexInByte(MidStr(command, i*2, 2));
    for j:=0 to 7 do
    begin
      if ((bytecrc and $01) XOR (Value And $0001) <> 0) then
        Value := (Value shr 1) XOR $A001
      else
        Value := Value shr 1;
      bytecrc := bytecrc shr 1;
    end;
  end;
end;
Leider kommt so immer noch etwas falsches heraus ($4D14).
  Mit Zitat antworten Zitat