pyserial readline()重新连接后超时

时间:2019-09-09 20:50:38

标签: python serial-port pyserial 3d-printing

我使用pyserial通过USB与3D打印机(Monoprice Select Mini V2)进行通信。第一次连接打印机时,一切正常,但是当我尝试重新打开连接时,我仍然可以发送命令,但不接收任何字符。

当我关闭端口并在同一程序中重新打开端口时,或者在第一个脚本返回后第二次重新运行python脚本打开端口时,会发生这种情况。正确重新连接的唯一方法是重新启动打印机或拔出并重新插入打印机。更改超时值或尝试仅读取一个字节并不能解决问题。

简短的无效示例:

import serial
ser = serial.Serial('/dev/ttyACM0', baudrate=115200, timeout=5)
ser.write("\n".encode())
print(ser.readline().decode())
# prints 'echo:Unknown command: "~"' (Not sure why)
print(ser.readline().decode())
# prints 'ok N0 P15 B15'
ser.write("M105\n".encode())
# prints expected response
ser.close()
print(ser.isOpen())
# prints 'False'

ser.open()
print(ser.isOpen())
# prints 'True'
ser.write("\n".encode())
print(ser.readline().decode())
# times out
ser.write("M105\n".encode())
print(ser.readline().decode())
# times out

0 个答案:

没有答案