diff --git a/inc/rs485.h b/inc/rs485.h index 8040541..d0496b6 100644 --- a/inc/rs485.h +++ b/inc/rs485.h @@ -28,5 +28,6 @@ void rs485_config(void); void process_command(char *cmd); +uint8_t calculate_crc(uint8_t package_header[3], uint8_t package_data[], size_t data_length); #endif //RS485_H \ No newline at end of file diff --git a/src/rs485.c b/src/rs485.c index 73e93e0..5698897 100644 --- a/src/rs485.c +++ b/src/rs485.c @@ -35,9 +35,21 @@ void rs485_config(void) { } void process_command(char *cmd) { + uint8_t package_header[3] = {0xB5, 0xF0, 0x04}; + uint8_t package_data[4] = {0}; + + package_data[0] = (g_eddy_current_value_uint32 >> 24) & 0xFF; + package_data[1] = (g_eddy_current_value_uint32 >> 16) & 0xFF; + package_data[2] = (g_eddy_current_value_uint32 >> 8) & 0xFF; + package_data[3] = g_eddy_current_value_uint32 & 0xFF; + + if (strncmp(cmd, "M1", 2) == 0) { // printf("M1 -=-=- OK!\r\n"); - printf("EddyCurrent: %lu\r\n", g_eddy_current_value_uint32); + // printf("EddyCurrent: %lu\r\n", g_eddy_current_value_uint32); + printf("%x%x%x", package_header[0], package_header[1], package_header[2]); + printf("%x%x%x%x", package_data[0], package_data[1], package_data[2], package_data[3]); + printf("%x\r\n", calculate_crc(package_header, package_data, 4)); } else if (strncmp(cmd, "M2", 2) == 0) { // printf("M2 -=-=- OK!\r\n"); printf("Temperature: %lu\r\n", g_temperature_uint32);