我需要使用串口与一些设备进行通信。我知道这个设备的参数(波特率等)。我还知道这个设备会等待,直到它接收到新的行字符(我不知道是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?')发布于 2020-06-19 21:44:31
编辑:我以前是个笨蛋,但现在我确信我是正确的。
我遇到了同样的问题,并通过添加一个“write_timeout”解决了它:
ser = serial.Serial(
port="/dev/NameOfDevice",
baudrate=115200,
bytesize=8,
parity='N',
stopbits=1,
write_timeout = 1,
timeout = 0)请注意,这将引发超时异常。在我的例子中,这是预期的行为,因为我正在检查是否可以正确地连接到用户指定的端口。
所以我怀疑你正在连接什么东西,但是它不承认你的写,因为“write”的默认行为是阻塞直到确认,这就是你所看到的。
另请参阅write函数的api描述:https://pyserial.readthedocs.io/en/latest/pyserial_api.html
https://stackoverflow.com/questions/47728713
复制相似问题