Open adadaadadade opened 3 months ago
YD-ESP32-S3
YD-ESP32-S3 http://vcc-gnd.cn/vcc_gnd/YD-ESP32-S3
USB and Serial0 connected to pc.
v3.0.3
Arduino IDE
Windows 10
80Hz
no
115200
HWCDC failed to write 64 bytes data at once, It didn't send it immediately, the data still in buffer. If the data is smaller than 64 bytes, It also failed randomly, but I haven't find a way to repeat it.
write
#define TEST_BUFFER_SIZE (8192) static uint8_t test_buffer[TEST_BUFFER_SIZE]; void setup() { Serial0.begin(115200); HWCDCSerial.begin(); Serial0.print("setup done"); } void loop() { static int sent_size = 0; int avaliable = HWCDCSerial.available(); if (avaliable <= 0) { delay(3); return; } avaliable = min(avaliable, TEST_BUFFER_SIZE); HWCDCSerial.readBytes(test_buffer, avaliable); sent_size += HWCDCSerial.write(test_buffer, avaliable); Serial0.printf("sent_size: %d\n", sent_size); }
import serial import argparse def echo_client(ser:serial.Serial, block_size=64): received_len = 0 tx_data = b"H" * block_size # while True: for i in range(1000): ser.write(tx_data) rx_data = ser.read(len(tx_data)) received_len += len(rx_data) if rx_data == tx_data: print("OK") else: raise Exception(f"NG, len(rx_data)={len(rx_data)}, received_len={received_len}, rx_data={rx_data}") def main(): parser = argparse.ArgumentParser(description="Serial echo") parser.add_argument("port", help="Serial port") parser.add_argument("--baudrate", help="Baudrate", type=int, default=115200) parser.add_argument("--dtr", help="DTR", action="store_true") parser.add_argument("--rts", help="RTS", action="store_true") parser.add_argument("--timeout", help="Timeout", type=float, default=5.0) parser.add_argument("--block_size", help="Block size", type=int, default=64) args = parser.parse_args() print(args) ser = serial.Serial(None) ser.port = args.port ser.baudrate = args.baudrate ser.dtr = args.dtr ser.rts = args.rts ser.timeout = args.timeout ser.open() echo_client(ser, args.block_size) if __name__ == "__main__": main()
serial0 output
setup done sent_size: 64
python stdout
PS D:\repo\python-utils> python .\serial_echo_client.py COM15 --block_size 64 Namespace(port='COM15', baudrate=115200, dtr=False, rts=False, timeout=5.0, block_size=64) Traceback (most recent call last): File "D:\repo\python-utils\serial_echo_client.py", line 41, in <module> main() File "D:\repo\python-utils\serial_echo_client.py", line 38, in main echo_client(ser, args.block_size) File "D:\repo\python-utils\serial_echo_client.py", line 15, in echo_client raise Exception(f"NG, len(rx_data)={len(rx_data)}, received_len={received_len}, rx_data={rx_data}") Exception: NG, len(rx_data)=0, received_len=0, rx_data=b''
No response
I fixed it by my custom implement. fkhwcdc.zip
Board
YD-ESP32-S3
Device Description
YD-ESP32-S3 http://vcc-gnd.cn/vcc_gnd/YD-ESP32-S3
Hardware Configuration
USB and Serial0 connected to pc.
Version
v3.0.3
IDE Name
Arduino IDE
Operating System
Windows 10
Flash frequency
80Hz
PSRAM enabled
no
Upload speed
115200
Description
HWCDC failed to
write
64 bytes data at once, It didn't send it immediately, the data still in buffer. If the data is smaller than 64 bytes, It also failed randomly, but I haven't find a way to repeat it.Sketch
Debug Message
serial0 output
python stdout
Other Steps to Reproduce
No response
I have checked existing issues, online documentation and the Troubleshooting Guide