You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows10下启用硬件流控时pyserial读取USB转UART设备失败

解决CP2102在pyserial启用硬件流控后读超时问题

针对你遇到的Silicon Labs CP2102 USB转UART设备在Windows 10下,使用pyserial启用DSR/DTR或RTS/CTS硬件流控后读取超时的问题,以下是几个针对性的解决方向:

1. 调整串口参数配置顺序

pyserial中,硬件流控相关参数(dsrdtr/rtscts)需要在串口打开前配置,而单独的引脚状态(dtr/rts)应在串口打开后设置——提前设置引脚状态会被open()时的流控初始化覆盖,导致流控逻辑异常。

修改后的示例代码:

import serial

ser = serial.Serial()
ser.baudrate = 230400
ser.port = "COM13"
# 先启用DSR/DTR流控,不要提前设置dtr
ser.dsrdtr = True
ser.write_timeout = 1
ser.timeout = 1
ser.open()
# 串口打开后再设置DTR引脚状态
ser.dtr = 1

# 合并写入操作,简化代码
n = ser.write(bytes([1, 2, 3]))
print("bytes written ", n)

# 一次性读取3字节,减少多次调用的开销
byte_read = ser.read(3)
print(byte_read)

ser.close()

如果使用RTS/CTS流控,替换流控参数即可:

# RTS/CTS流控配置
ser.rtscts = True
ser.open()
ser.rts = 1

2. 检查CP2102驱动的流控配置

Windows下CP2102的驱动可能会覆盖pyserial的部分设置,需确保驱动配置与代码一致:

  • 打开设备管理器,找到CP2102对应的串口设备,右键选择「属性」
  • 切换到「端口设置」标签页,点击「高级」按钮
  • 在「流控制」选项中,选择与代码匹配的模式(如启用DSR/DTR时选对应选项,RTS/CTS选「硬件」)
  • 部分驱动版本需手动勾选「启用DTR」或「启用RTS」,确保与代码中的引脚状态一致

3. 验证硬件引脚连接

确认CP2102的流控引脚与对端设备正确连接:

  • DSR/DTR流控需连接DTR(CP2102引脚)到对端的DSR,DSR(CP2102引脚)到对端的DTR
  • RTS/CTS流控需连接RTS到对端的CTS,CTS到对端的RTS
    终端工具能正常工作可能是因为其默认忽略了部分引脚状态检查,而pyserial会严格遵循流控逻辑等待引脚信号。

4. 升级pyserial到最新版本

旧版本pyserial在Windows平台下存在硬件流控的兼容性bug,建议升级到最新稳定版:

pip install --upgrade pyserial

内容的提问来源于stack exchange,提问作者user97576

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 19:40:07