From 4d4f08e95e41c6c4aeb4d92bc0132080cb3ddf42 Mon Sep 17 00:00:00 2001 From: impressionyang Date: Tue, 26 Nov 2024 12:22:07 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=90=9B=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=89=93=E5=8D=B0logo=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main/utilities/letter_shell/port/esp-idf/shell_port.c | 11 ++++++++++- main/utilities/usb_cherry/esp_setup/my_usb_setup.c | 7 ++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/main/utilities/letter_shell/port/esp-idf/shell_port.c b/main/utilities/letter_shell/port/esp-idf/shell_port.c index aa5104a..0decb3f 100644 --- a/main/utilities/letter_shell/port/esp-idf/shell_port.c +++ b/main/utilities/letter_shell/port/esp-idf/shell_port.c @@ -33,7 +33,16 @@ unsigned short userShellWrite(char *data, unsigned short len) // return uart_write_bytes(SHELL_UART, (const char *)data, len); // return cdc_usb_writ_bytes(data, len); unsigned short ret = 0; - ret = cdc_usb_writ_bytes(data, len); + int idx = 0, n = 0; + while (idx < len) { + n = len - idx >= 64 ? 64 : len - idx; + ret = cdc_usb_writ_bytes(data + idx, n); + while (!ret) { + vTaskDelay(10); + ret = cdc_usb_writ_bytes(data + idx, n); + } + idx += n; + } // cdc_printf("write need : %d, get %d\r\n", len, ret); // cdc_printf("%s", data); return len; diff --git a/main/utilities/usb_cherry/esp_setup/my_usb_setup.c b/main/utilities/usb_cherry/esp_setup/my_usb_setup.c index 72f5cfd..8079be1 100644 --- a/main/utilities/usb_cherry/esp_setup/my_usb_setup.c +++ b/main/utilities/usb_cherry/esp_setup/my_usb_setup.c @@ -209,14 +209,15 @@ signed short cdc_usb_writ_bytes(char* data, unsigned short len) signed short n; char aBuffer[64] = { 0 }; n = len >= 64 ? 64 : len; - aBuffer[63] = '\n'; + int ret = -1; + // aBuffer[63] = '\n'; strncpy(aBuffer, data, n); if (dtr_enable) { - usbd_ep_write(CDC_IN_EP, (uint8_t*)data, n, NULL); + ret = usbd_ep_write(CDC_IN_EP, (uint8_t*)data, n, NULL); } - return len; + return ret == 0 ? len : 0; } int cdc_printf(const char *fmt, ...) {