解决:dsrdtr = True不应仅用于软件,仅用于正在使用的硬件
您好我正在尝试将电报写入串口并可以成功发送一个。如果我发送多个没有任何反应。必须关闭脚本,此时第一封电报已成功接收。
制造商建议电报之间间隔50毫秒,即使休息时间> 5秒仍然会失败。
s = serial.Serial(
port='COM3',
baudrate=9600,
parity=serial.PARITY_ODD,
stopbits=serial.STOPBITS_ONE,
timeout=0,
bytesize=serial.SEVENBITS,
dsrdtr=True
)
buttonUP=b'\x54\x30\x34\x0D'
s.write(buttonUP)
time.sleep(0.05)
s.write(buttonUP)
time.sleep(0.05)
s.write(buttonUP)
如果我写了
s.write(buttonUP)
s.close()
s.open()
s.write(buttonUP)
这样可行但是关闭/打开造成的延迟对我们的要求来说太长了。
有没有人对可能导致此问题的原因有任何想法?非常感谢你的帮助
答案 0 :(得分:0)
如果您尝试使用readline()
函数从端口读取,则可能会出现问题,即您不会使用换行符终止每封邮件。尝试将其更改为
buttonUP=b'\x54\x30\x34\x0D\n'
您可以阅读更多here