我需要使用串口与某些设备通信。我知道这个设备参数(boudrate等)。我也知道这个设备等到它接收到一个新的行字符(我不知道unix或windows类型)然后以ASCII发送回来。
问题在于,当我想写任何东西时,脚本会挂起。没有错误发生,以后什么也没发生。打印任何东西甚至关闭端口是不可能的。
我该如何解决?
它不适用于真正基本的脚本。当然,这不是一个完整的代码,只是一个展示不起作用的例子。
可悲的是,我没有找到任何有效的解释或答案。
我正在使用Ubuntu 16.04
感谢您的帮助!
import serial
ser = serial.Serial(
port="/dev/NameOfDevice",
baudrate=115200,
bytesize=8,
parity='N',
stopbits=1,
timeout = 0)
ser.open()
print('Port was opened')
ser.write(b'\r\n') #this is a line where it stops working. Different inputs were tried, nothing works.
print('Does it works?')
答案 0 :(得分:1)
编辑:我以前是个傻瓜,但是现在我确定我是正确的。
我遇到了同样的问题,并通过添加“ write_timeout”解决了该问题:
ser = serial.Serial(
port="/dev/NameOfDevice",
baudrate=115200,
bytesize=8,
parity='N',
stopbits=1,
write_timeout = 1,
timeout = 0)
请注意,这将引发超时异常。就我而言,这是预期的行为,因为我正在检查是否可以在用户指定的端口上正确连接。
所以我怀疑您正在连接某些东西,但是它没有确认您的写入,并且由于“写入”的默认行为是阻塞直到确认,因此您将看到这种情况。
另请参阅有关写函数的api描述: https://pyserial.readthedocs.io/en/latest/pyserial_api.html