test_cdc_speed.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import serial
  2. import time
  3. try:
  4. from serial.tools.list_ports import comports
  5. except ImportError:
  6. raise serial.serialutil.SerialException
  7. test_comx = 'COM66'
  8. test_baudrate = 2000000
  9. test_maxsize = 10*1024*1024
  10. test_data = '0xAA' * 4096
  11. test_serial = serial.Serial(test_comx, test_baudrate, timeout = 1)
  12. def test_cdc_out():
  13. send_count = 0
  14. begin = time.time()
  15. while True:
  16. if send_count < test_maxsize:
  17. txdatalen = test_serial.write(test_data.encode("utf-8"))
  18. send_count += txdatalen
  19. else:
  20. print("cdc out speed %f MB/s" %(send_count//1024//1024/(time.time() - begin)))
  21. break
  22. def test_cdc_in():
  23. read_count = 0
  24. begin = time.time()
  25. while True:
  26. if read_count < test_maxsize:
  27. data = test_serial.read(test_maxsize).decode(encoding='utf-8',errors='ignore')
  28. read_count += len(data)
  29. else:
  30. print("cdc in speed %f MB/s" %(read_count//1024//1024/(time.time() - begin)))
  31. break
  32. if __name__ == '__main__':
  33. print('test cdc out speed')
  34. test_serial.setDTR(0)
  35. test_cdc_out()
  36. print('test cdc in speed')
  37. test_serial.setDTR(1)
  38. test_cdc_in()