代码
#include <stdio.h>
// 计算 ADD8 校验和
unsigned char add8_checksum(const unsigned char* data, size_t length) {
unsigned int sum = 0;
for (size_t i = 0; i < length; i++) {
sum += data[i];
}
// 取低 8 位
return (unsigned char)(sum & 0xFF);
}
int main() {
// 示例数据
unsigned char data[] = { 0xAA, 0xED, 0x20, 0x01, 0x00, 0x01, 0x19, 0xD1, 0x01, 0x01, 0x01, 0x31,
0x01, 0x01, 0x00, 0x05, 0x15, 0x81, 0x12, 0x11, 0x12,
0x13, 0x25, 0x02, 0x03, 0x04, 0x00, 0x10, 0x00, 0x04,
0x02, 0x04, 0x31, 0x05, 0x00 };
size_t data_length = sizeof(data) / sizeof(data[0]);
// 计算 ADD8 校验和
unsigned char checksum = add8_checksum(data, data_length);
// 输出结果
printf("数据: ");
for (size_t i = 0; i < data_length; i++) {
printf("%02X ", data[i]);
}
printf("\nADD8 校验和: %02X\n", checksum);
return 0;
}
运行结果

如果不知道程序中ADD8校验是否正确,可以将我们输入的数据在串口调试助手上进行验证。如下图所示:
