char buff[200];
int buffIndex;
void resetBuff(void) {
buffIndex = 0;
buff[buffIndex] = '/0';
}
void checkSum(void) {
int i;
byte chkSumVal;
char sumStr[4];
byte sumStrVal;
if (strchr(buff,'*')) {
i=0;
chkSumVal = 0;
while(buff[i]!='*') {
chkSumVal ^= buff[i]; //xor the incoming char
i++;
}
i++;
sumStr[0] = buff[i++];
sumStr[1] = buff[i];
sumStr[2] = '\0';
sumStrVal = (byte)strtol(sumStr, NULL, 16);
if (chkSumVal!=sumStrVal) {
Serial.println("***** Checksum failed! *****");
Serial.print("The message [");
Serial.print(buff);
Serial.println("]");
Serial.print("Msg length : ");
Serial.println(strlen(buff));
Serial.println(sumStrVal);
Serial.println(chkSumVal,HEX);
} else {
Serial.println("It's ok");
}
} else {
Serial.println("***** Missing Checksum! *****");
}
}
void loop() {
char aChar;
if (Serial1.available()) {
Serial.print(Serial1.available());
Serial.print(" ");
aChar = Serial1.read();
if (aChar=='$') {
Serial.print("Synk!");
Serial.print(" ");
resetBuff();
} else if (aChar=='\n') {
Serial.println(buff);
checkSum();
resetBuff();
} else {
buff[buffIndex++] = aChar;
buff[buffIndex] = '/0';
}
}
}