繁体   English   中英

python串行写入超时

[英]python serial write timeout

我已经使用 pyserial 几天了。 然而,今天出现了一个问题。 我遇到了串行写入超时。 几天前,当我使用开关时,一切正常。 但是今天我换了另一个开关。 然后出现串行写入超时。 我没有更改任何代码,但问题实际上非常严重。 更严重的是,超时并不总是发生,这意味着有时我可以成功写入串行。

ser = serial.Serial( #Serial COM configuration
    port='COM5',
    baudrate=9600,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS,
    rtscts=True,
    timeout=2,
    writeTimeout=5
  )
strInput = "show ver"
ser.flushInput()
ser.flushOutput()
ser.write(strInput.encode('utf-8')+b'\n')

我已经确保端口是COM5,交换机的波特率是9600。非常感谢您回答我的问题。

我最近遇到了这个问题。 我发现设置write_timeout=0解决了这个问题(也不确定为什么写超时甚至存在......)

这里的另一个答案暗示了同样的事情:)

如果您有流量控制请求发送/清除发送结构并且您正在写入的设备没有响应,您需要写入超时才能不挂起

问题可能是接口试图遵守 RTS、CTS、DSR 或 DTS 信号。 如果它们没有正确连接,它们可能会通过超时神秘地影响通信。

一种解决方案可能是在 Python 中打开串行端口时使用rtscts=False和/或dsrdtr=False忽略它们的影响。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM