// // Created by nano on 8/23/26. // #ifndef MCU_CODE_UART_SERIAL_H #define MCU_CODE_UART_SERIAL_H #include "driver/uart.h" #include "freertos/queue.h" #include "hal/uart_types.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "driver/uart.h" #include "driver/gpio.h" #include "sdkconfig.h" #include "esp_log.h" class uart_serial { public: explicit uart_serial(uart_port_t uart_port_num = UART_NUM_0, const gpio_num_t tx = GPIO_NUM_NC, const gpio_num_t rx = GPIO_NUM_NC, int baudrate = 9600) : uart_num(uart_port_num), tx_pin_num(tx), rx_pin_num(rx) { uart_config.baud_rate = baudrate; uart_config.data_bits = UART_DATA_8_BITS; uart_config.parity = UART_PARITY_DISABLE; uart_config.stop_bits = UART_STOP_BITS_1; uart_config.flow_ctrl = UART_HW_FLOWCTRL_DISABLE; init(); }; void uart_serial_dtor() const { uart_driver_delete(uart_num); } void write(const char* data, int len); void write_byte(const char* data); int read(char* data,int len); int read_byte(char* data); private: void init(); QueueHandle_t uart_queue = {}; const uart_port_t uart_num; uart_config_t uart_config = {}; const gpio_num_t tx_pin_num; const gpio_num_t rx_pin_num; constexpr static int buffer_size = (1024); }; #endif //MCU_CODE_UART_SERIAL_H