diff --git a/.vscode/settings.json b/.vscode/settings.json index 466cf40..e8b8c52 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -31,6 +31,9 @@ "esp_system.h": "c", "esp_log.h": "c", "ble_uart.h": "c", - "uart.h": "c" + "uart.h": "c", + "bitset": "c", + "chrono": "c", + "algorithm": "c" }, } \ No newline at end of file diff --git a/main/ble_parse_data.c b/main/ble_parse_data.c index 7664089..05edb61 100644 --- a/main/ble_parse_data.c +++ b/main/ble_parse_data.c @@ -32,6 +32,7 @@ void bluetooth_gatts_try_process_data() { ESP_LOGI(BLE_PARSE_DATA_TAG, "order:%s ,index:%d speedLevel:%d position:%f direction:%d", parse_bluetooth_processer->order, parse_bluetooth_processer->index, parse_bluetooth_processer->speedLevel, parse_bluetooth_processer->position, parse_bluetooth_processer->direction); if (strcmp(parse_bluetooth_processer->order, set_position) == 0) { + parse_bluetooth_processer->auto_report_flag = true; ESP_LOGI(BLE_PARSE_DATA_TAG, set_position); // motor_cmd_set_position(parse_bluetooth_processer->speedLevel, parse_bluetooth_processer->position, parse_bluetooth_processer->direction); receipt_json_set_position(); diff --git a/main/main.c b/main/main.c index 4ff992a..0bb7c83 100644 --- a/main/main.c +++ b/main/main.c @@ -57,7 +57,7 @@ void app_main(void) { // char* test_str = "This is a test string.\n"; while (true) { - // bluetooth_gatts_try_process_data(); + bluetooth_gatts_try_process_data(); // if (s_bluetooth_processer.auto_report_flag) { // receipt_json_get_status(); // s_bluetooth_processer.auto_report_flag = false; @@ -68,7 +68,10 @@ void app_main(void) { // s_bluetooth_processer.motor_drive_turn_flag = false; // } - motor_drive_read_encoder(); + if (s_bluetooth_processer.auto_report_flag) { + motor_drive_read_encoder(); + s_bluetooth_processer.auto_report_flag = false; + } // motor_drive_set_packages_ctr(35.68); // motor_drive_set_packages_data_max64bit(0x34,4,0X76482534); diff --git a/main/motor_drive.c b/main/motor_drive.c index 49f595a..486c1ba 100644 --- a/main/motor_drive.c +++ b/main/motor_drive.c @@ -41,10 +41,11 @@ void motor_drive_turn(int direction, int speed_level, double position) { } double motor_drive_read_encoder() { + uint8_t i = 0; uint8_t buffer[20] = {0}; // Generate cmd - motor_drive_buffer_cmd_generate(buffer, 0x90, 0, 0); + motor_drive_buffer_cmd_generate(buffer, 0x90, 4, 0X5A97FF00); // Send cmd // uart_write_bytes(UART_NUM_2, (const char*)test_str, strlen(test_str)); @@ -142,6 +143,25 @@ void motor_drive_buffer_cmd_generate(uint8_t *buffer, uint8_t cmd, uint8_t buffe motor_drive_hex_to_str((char *)buffer, (5 + hex_to_str_size), (char *)strbuffer); ESP_LOGI(MOTOR_DRIVE, "%s", strbuffer); + motor_drive_buffer_cmd_parse(buffer); } -void motor_drive_buffer_cmd_parse(uint8_t *buffer) {} \ No newline at end of file +void motor_drive_buffer_cmd_parse(uint8_t *buffer) { + uint8_t i = 0; + uint16_t temp_data_arr[(buffer[3] / 2)]; + ESP_LOGI(MOTOR_DRIVE, "=====buffer data size %d=====", buffer[3]); + if (buffer == NULL) { + ESP_LOGW(MOTOR_DRIVE, "cmd parse buffer null"); + return; + } + + if (buffer[0] != 0X3E || buffer[2] != 0X01) { + ESP_LOGW(MOTOR_DRIVE, "cmd parse buffer error"); + return; + } + + for (i = 0; i < (buffer[3]); i += 2) { + temp_data_arr[i] = buffer[5 + i] + (buffer[5 + i + 1] << 8); + ESP_LOGI(MOTOR_DRIVE, "%d\n", temp_data_arr[i]); + } +} \ No newline at end of file diff --git a/main/motor_drive.h b/main/motor_drive.h index 5cfeab0..1123a47 100644 --- a/main/motor_drive.h +++ b/main/motor_drive.h @@ -42,4 +42,5 @@ double motor_drive_read_encoder(); void motor_drive_set_packages_data_max64bit(uint8_t cmd, uint8_t buffer_data_size, uint64_t buffer_data); void motor_drive_set_packages_ctr(double position); void motor_drive_hex_to_str(char *hex, int hex_len, char *str); -void motor_drive_buffer_cmd_generate(uint8_t *buffer, uint8_t cmd, uint8_t buffer_data_size, uint64_t buffer_data); \ No newline at end of file +void motor_drive_buffer_cmd_generate(uint8_t *buffer, uint8_t cmd, uint8_t buffer_data_size, uint64_t buffer_data); +void motor_drive_buffer_cmd_parse(uint8_t *buffer); \ No newline at end of file