Hallo,

Eine mögliche Variante für die Checksummenberechnung über die zu übertragenden Daten würde ich die, wie bereits in deinem Beispielcode angedacht, XOR-Operation verwenden. Nachfolgend ein Beispiel, wie die Prüfsummenberechnung z.B. bei zwei zu übertragenden Datenbytes aussehen könnte.

Code:
uint8_t const data_length = 2; // Konstante um die Anzahl der Nutzdaten anzugeben
uint8_t data[2]; // Array welches die Nutzdaten (2 Bytes) enthält

// Nutzdaten setzen
data[0] = 0x0F;
data[1] = 0xF0;

// Variable für die Prüfsumme anlegen und mit dem Wert der ersten Nutzdatenvariable initialisieren
uint8_t checksum = data[0];
// Prüfsumme berechnen
uint8_t i=1; for(; i<data_length; i++) {
  checksum = checksum ^ data[i];
}
Die Variable checksum enthält in diesem Beispiel nach der Berechnung den Wert 0xFF (Weil 0x0F xor 0xF0 = 0xFF ist).

Für die Übertragung wäre es nun wichtig zu wissen, wie die Funktion uart_Sendstring() intern funktioniert. Aufgrund der Art des verwendeten Datentypes (nämlich char) tippe ich auf eine Implementierung, bei solange Datenbytes aus dem Array Sendbuffer übertragen wird, bis eine sogenanntes Terminierungszeichen, welches bei ASCII-Strings den Wert 0x00 hat, in dem Array vorkommt. Da bei deiner Übertragung der Wert 0x00 aber durchaus vorkommen kann, müsstest du entweder garantieren, dass keine 0 in deinen Werte vorkommen kann (unmöglich), oder aber die Werte in ASCII-Zeichen konvertieren (aufwändig), oder eine Funktion uart_sendBytes(uint8_t *data, uint8_t const length) schreiben. Dies sollte nach Analyse der Funktion uart_Sendstring() kein Problem darstellen, im Zweifelsfall kannst du aber den Quellcode der Funktion hier posten und ich schreibe die Funktion uart_Sendstring dann so um, dass du die Datenbytes über den PC senden kannst.

Ad Datentypen und ASCII - uint8_t und char sind beides Datentypen, welche jeweils 8 Bit (= 1 Byte) groß sind. Damit lassen sich daher 256 Zahlen (2⁸) darstellen. ASCII wiederum ist eine Kodierung, wie die 256 Werte zu interpretieren sind. Der Zusammenhang, welcher Wert welches Zeichen repräsentiert, ist über eine ASCII-Tabelle gegeben.

Viel Erfolg