Du könntest die Funktion z. B. folgendermaßen realisieren:
void checksum(char* csbuf, char *CSout){
// Vorige Checksumme löschen
int cs=0;
// Ohne '
Aufrufen kannst du das dann folgendermaßen
char outBuf[100], CSout[4];
strcpy( outbuf, "NMEA-Datensatz ohne CS");
checksum(outbuf, CSout);
strcat( outbuf, CSout);
strcat( outbuf, "\r\n");
Serial.print(outbuf);
for (int n=1; n < strlen(csbuf)+1; n++) {
// berechnen der Checksumme
cs ^= csbuf[n];
}
// Formatieren in zweistellig, führende Null in HEX
sprintf(CSout, "*%02X\0" , cs);
}
Aufrufen kannst du das dann folgendermaßen
§DISCOURSE_HOISTED_CODE_1§