Zitat von
SvB:
@Muetze1
Irgendwie habe ich ein Brett vor dem Kopf. Ich komme nicht drauf, wie ich Deine funktion benutzen soll, wie rufe ich die auf? Mit Pointern usw. habe ich es nicht so.
Ich habe mal alle Bytes als Bits (0+1) nacheinander in ein Memo gestellt.
Du schickst doch keine solche strings über die Schnittstelle sondern Bytes. Diese musst du in der Funktion angeben.
Beispiel: Das Array sind die zu sendenden Daten, der letzte Eintrag im Array ist die Checksumme:
Delphi-Quellcode:
procedure SendData;
var
lData: packed array[5] of byte;
begin
lData[0] := $44;
lData[1] := $55; // deine Daten halt
lData[2] := $33;
lData[3] := $33;
lData[4] := CalcChecksum(lData[0], 4);
Serial.SendBytes(lData);
end;
Wenn du die Daten mit 0 und 1 im Memo darstellst, dann machst du aus einem Bit 8 Bit, da 0 oder 1 jeweils ein Zeichen somit ein Byte darstellt. Dadurch verzerrst du die eigentlichen Informationen, du blähst die Daten auf das 8x ihrer eigentlichen Grösse auf. Somit kann da nichts richtiges mehr rauskommen, da du komplett andere Daten angibst.
Du musst zwischen den Daten und der Formatierung der Daten zur Ausgabe unterscheiden. Letzteres sollte immer nur in eine Richtung gehen, also nur zur Ausgabe.
Zitat von
SvB:
Ich werde mal einen Kollegen anhauen, der das Protokoll besorgt hat, der soll da mal nachfragen.
Ich sehe eigentlich kein Problem. Berechne die Prüfsumme mal und schau nach ob es stimmt. Ich würde das erstmal probieren, bevor man sich als Firma blamiert, weil eigentlich ist es eindeutig beschrieben.