|
|
@ -7,7 +7,7 @@ |
|
|
|
#define DATA_LEN 3 |
|
|
|
#define DATA_TYPE 4 |
|
|
|
|
|
|
|
#define DATA_CHECKSUM_START 4 |
|
|
|
#define DATA_CHECKSUM_START 5 |
|
|
|
|
|
|
|
/* |
|
|
|
* 如:FF FF FE 07 03 2A 08 00 03 E8 DA |
|
|
@ -32,9 +32,12 @@ uint8_t steering_gear_check_sum(int *buffer, int buffer_size) { |
|
|
|
} |
|
|
|
|
|
|
|
checksum = (buffer[DATA_ID] + buffer[DATA_LEN] + buffer[DATA_TYPE]); // 固定加这三位 |
|
|
|
// printf("checksum:%d\n", checksum); |
|
|
|
// checksum把数据长度算里面了,但是数据长度位没把自己算里面 |
|
|
|
for (int i = 0; i < (buffer[DATA_LEN] - 2); i++) { |
|
|
|
// printf("buffer:0x%x\n", buffer[DATA_CHECKSUM_START + i]); |
|
|
|
checksum += buffer[DATA_CHECKSUM_START + i]; |
|
|
|
// printf("checksum:0x%x\n", checksum); |
|
|
|
} |
|
|
|
|
|
|
|
return ((~checksum) & 0xff); |
|
|
@ -67,9 +70,10 @@ int get_int_buffer_len(int *buffer, int buffer_size) { |
|
|
|
* 0xFF, 0xFF, 0x01, 0x02, 0x06 |
|
|
|
*/ |
|
|
|
int main(int argc, char *argv[]) { |
|
|
|
int buffer[128] = {0xFF, 0xFF, 0x01, 0x04, 0x02, 0x38, 0x02}; // 恢复出厂设置 |
|
|
|
int buffer[128] = {0xFF, 0xFF, 0x01, 0x04, 0x03, 0x1E, 0x05}; // 恢复出厂设置 |
|
|
|
|
|
|
|
printf("check sum:0X%x\n", steering_gear_check_sum(buffer, get_int_buffer_len(buffer, (sizeof(buffer) / sizeof(int))))); |
|
|
|
printf("check sum:0X%x\n", |
|
|
|
steering_gear_check_sum(buffer, get_int_buffer_len(buffer, (sizeof(buffer) / sizeof(int))))); |
|
|
|
|
|
|
|
return 0; |
|
|
|
} |