|
|
@ -41,11 +41,10 @@ void motor_drive_turn(int direction, int speed_level, double position) { |
|
|
|
} |
|
|
|
|
|
|
|
double motor_drive_read_encoder() { |
|
|
|
uint8_t i = 0; |
|
|
|
uint8_t encoder_buffer_size = 0; |
|
|
|
size_t encoder_buffer_size = 0; |
|
|
|
uint8_t buffer[20] = {0}; |
|
|
|
uint16_t encoder_data = 0; |
|
|
|
|
|
|
|
uart_flush(uart_num); |
|
|
|
// Generate cmd |
|
|
|
encoder_buffer_size = motor_drive_buffer_cmd_generate(buffer, 0x90, 4, 0X5A97FF00); |
|
|
|
if (encoder_buffer_size == 0) { |
|
|
@ -53,28 +52,27 @@ double motor_drive_read_encoder() { |
|
|
|
return -1; |
|
|
|
} |
|
|
|
|
|
|
|
uart_flush(uart_num); |
|
|
|
// Send cmd |
|
|
|
uart_write_bytes(uart_num, (const char *)buffer, encoder_buffer_size); |
|
|
|
|
|
|
|
memset(buffer, 0, sizeof(uint8_t) * 20); |
|
|
|
ESP_LOGI(MOTOR_DRIVE, "%s", buffer); |
|
|
|
encoder_buffer_size = 0; |
|
|
|
memset(buffer, 0, sizeof(uint8_t) * 20); |
|
|
|
|
|
|
|
// Wait receive |
|
|
|
while (1) { |
|
|
|
encoder_buffer_size = uart_read_bytes(uart_num, buffer, 4, 2000 / portTICK_RATE_MS); |
|
|
|
if (encoder_buffer_size == 0) { |
|
|
|
break; |
|
|
|
} |
|
|
|
ESP_LOGI(MOTOR_DRIVE, "%s", buffer); |
|
|
|
encoder_buffer_size = uart_read_bytes(uart_num, buffer, 12, 2000 / portTICK_RATE_MS); |
|
|
|
if (encoder_buffer_size != 12 || buffer[0] != 0X3E) { |
|
|
|
ESP_LOGW(MOTOR_DRIVE, "encoder size:%d,buffer[0] = 0X%x", encoder_buffer_size, buffer[0]); |
|
|
|
return -1; |
|
|
|
} |
|
|
|
|
|
|
|
// Parse receive |
|
|
|
// R_encoder = motor_drive_buffer_cmd_parse(); |
|
|
|
motor_drive_buffer_cmd_parse(buffer); |
|
|
|
|
|
|
|
encoder_data = buffer[5] + (buffer[6] << 8); |
|
|
|
|
|
|
|
// parse motor usart |
|
|
|
// return R_encoder; |
|
|
|
return 0.0; |
|
|
|
return ((double)encoder_data/100); |
|
|
|
} |
|
|
|
|
|
|
|
void motor_drive_set_packages_data_max64bit(uint8_t cmd, uint8_t buffer_data_size, uint64_t buffer_data) { |
|
|
@ -125,7 +123,7 @@ void motor_drive_hex_to_str(char *hex, int hex_len, char *str) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
uint8_t motor_drive_buffer_cmd_generate(uint8_t *buffer, uint8_t cmd, uint8_t buffer_data_size, uint64_t buffer_data) { |
|
|
|
size_t motor_drive_buffer_cmd_generate(uint8_t *buffer, uint8_t cmd, uint8_t buffer_data_size, uint64_t buffer_data) { |
|
|
|
uint8_t i = 0; |
|
|
|
uint8_t checksum = 0; |
|
|
|
uint8_t buffer_data_uint8 = 0; |
|
|
|