Hello 各位,
我的项目在使用ESP32-C3,目前在调试USB CDC-ACM,我的程序中程序中希望通过USB CDC-ACM来putchar(向上位机传输字符)和getchar(从上位机获取字符)即可,不希望putchar后边必须跟上换行符"\n", 请问有什么解决之道吗?感谢!
1. idf.py menuconfig -> Component config -> ESP System Setting -> Channel for console output -> USB Serial/JTAG Controlller
2. ESP32C3的USB口只可作为JTAG和CDC-ACM, CDC-ACM在上电进入SPI-Flash烧录模式时可作为烧录串口,
在上电进入正常模式下可作为标准Unix Console控制台, 可以执行标准Unix系统调用
3. Caution: 由于unix上标准输入输出都是带有缓存的, 一般是行缓存, 对于标准输出, 需要输出的数据并不
是直接输出到终端上, 而是首先缓存到某个地方, 当遇到行刷新标志或者该缓存已满的情况下, 才会把缓
存的数据显示到终端设备上, 实践证明, ESP32C3下编程 putc/putchar/printf只会将字符放到发送缓冲
区, 只有缓冲区存满了(4096字节)或者执行了printf("\n")缓冲区中的字符才会发送出去!
在标准Unix环境下解决的方法有:
a. fflush(stdout)刷新标准输出缓冲区
b. setvbuf(stdout,NULL,_IONBF,0)关闭stdout缓冲区
但是ESP32C3 USB Console是硬件实现, a/b两种方法目前都无效!
Best Regards!
ESP32-C3 CDC-ACM must printf "\n" after putchar
Jump to
- English Forum
- Explore
- News
- General Discussion
- FAQ
- Documentation
- Documentation
- Sample Code
- Discussion Forum
- ESP32-S31
- Hardware
- ESP-IDF
- ESP-BOX
- ESP-ADF
- ESP-MDF
- ESP-WHO
- ESP-SkaiNet
- ESP32 Arduino
- IDEs for ESP-IDF
- ESP-AT
- ESP IoT Solution
- ESP RainMaker
- Rust
- ESP8266
- Report Bugs
- Showcase
- Chinese Forum 中文社区
- 活动区
- 乐鑫活动专区
- 讨论区
- ESP32-S31 中文讨论版
- 喵伴 中文讨论版
- ESP-IDF 中文讨论版
- 《ESP32-C3 物联网工程开发实战》书籍讨论版
- 中文文档讨论版
- ESP-AT 中文讨论版
- ESP-BOX 中文讨论版
- ESP IoT Solution 中文讨论版
- ESP-ADF 中文讨论版
- ESP Mesh 中文讨论版
- ESP Cloud 中文讨论版
- ESP-WHO 中文讨论版
- ESP-SkaiNet 中文讨论版
- ESP 生产支持讨论版
- 硬件问题讨论
- 项目展示
Who is online
Users browsing this forum: PetalBot and 2 guests
- All times are UTC
- Top
- Delete cookies
About Us
Espressif Systems is a fabless semiconductor company providing cutting-edge low power WiFi SoCs and wireless solutions for wireless communications and Internet of Things applications. ESP8266EX and ESP32 are some of our products.
Information
Espressif ESP32 ... Available now!