Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Can';t多次写入同一端口(pyserial)_Python_Serial Port_Pyserial - Fatal编程技术网

Python Can';t多次写入同一端口(pyserial)

Python Can';t多次写入同一端口(pyserial),python,serial-port,pyserial,Python,Serial Port,Pyserial,已解决:dsrdtr=True不应用于软件,仅用于正在使用的硬件 嗨,我正在尝试向串行端口发送电报,并且可以成功地发送一个。如果我发送了一个以上的邮件,什么都不会发生。脚本必须在成功接收第一封电报时关闭 制造商建议电报之间的中断时间为50毫秒,即使中断时间>5秒,仍然会失败 s = serial.Serial( port='COM3', baudrate=9600, parity=serial.PARITY_ODD, stopbits=serial.STOPBITS_ONE, timeout=0

已解决: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)
这是可行的,但关闭/打开造成的延迟对于我们的要求来说太长了


有人知道是什么导致了这个问题吗?非常感谢您的帮助

如果您试图使用
readline()
函数从端口读取,可能是因为您没有用换行符终止每条消息。试着把它改成

buttonUP=b'\x54\x30\x34\x0D\n' 

您可以阅读更多内容

是否尝试扫描串行端口数据以查看数据是否已发送?您的数据可能已发送,但连接设备上的目标代码无法对其进行缓冲或其他操作。(?)您的DSR/DTR状态正确吗?我现在也在用pyserial做一个项目。。。我对此有很多问题。。但主要归结为其他服务的问题(在我的情况下是rs485连接),前提是您的接口设置正常。。。我很想知道失败时的错误是什么??如果我发送一次,数据肯定会被发送。通过读取端口并看到它控制的部件移动,可以确认这一点。@procyclsure没有问题,再次感谢您!dsrdtr=True是问题所在,默认情况下在提供的硬件上使用,但如果终端设备需要一条可能相关的新线,则在使用软件时不应使用。。但是重新启动脚本可以修复它。。所以我不认为这是终端设备的问题。我认为他正在处理一个写问题。不幸的是,更改没有起作用-这个问题在没有尝试从端口读取的情况下发生。谢谢你的帮助,我会记住我是如何终止转发的消息的。我在想,关闭连接可能会发送一条新线。如果你不尝试阅读它,你怎么知道它不起作用呢?因为它控制着在成功发送按钮时移动的机械部件。运行脚本后,我会检查s.read(9)以查看它移动了多远