ESP32 CALCULATION INVALID
Posted: Sat May 17, 2025 11:49 pm
I try write some code to calculate some bytes, but the result is invalid, result should be "0x28". Please help.
Code: Select all
void setup() {
Serial.begin(115200);
uint8_t data[] = {0x13, 0x00, 0x93, 0x00, 0x64, 0x09, 0xC4, 0x01, 0x7E, 0x8B, 0x01, 0x06, 0x00, 0x08, 0xE0, 0x02, 0x8E, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x02, 0x7E, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x02, 0x6E, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x02, 0x5E, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x02, 0x4E, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x02, 0x3E, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x02, 0x2E, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x02, 0x1E, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xF5, 0x00, 0xFB};
uint8_t cs = CalcChecksum(data, sizeof(data));
Serial.println(String(cs));
}
void loop() {}
uint8_t CalcChecksum(const uint8_t data[], const uint8_t dataLen)
{
uint32_t cs = 0;
for (uint16_t i = 0; i < dataLen; i++)
{
cs += data[i];
}
return (((cs ^ 0xFF) + 1) & 0xFF);
}