【发布时间】:2018-02-28 12:59:27
【问题描述】:
已解决: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)
这可行,但关闭/打开造成的延迟对于我们的要求来说太长了。
是否有人对可能导致此问题的原因有任何想法?非常感谢您的帮助
【问题讨论】:
-
有没有尝试扫描串口数据看数据是否发送?您的数据可能已发送,但连接设备上的目标代码无法缓冲它或其他什么。 (?)
-
您的 DSR/DTR 状态是否正确?
-
我现在也在用 pyserial 做一个项目......我遇到了很多问题......但主要归结为提供的其他服务(在我的情况下为 rs485 连接)的问题你的界面设置没问题...我很想知道失败时的错误是什么??
-
数据发送一次肯定发送。这可以通过读取端口并看到它控制的部件移动来确认。
-
@Procyclinsur 没问题,再次感谢您! dsrdtr=True 是问题所在,在提供的硬件上默认使用,但在使用软件时不应该使用
标签: python serial-port pyserial