gpt4 book ai didi

Python 预期 : fdpexpect + pyserial == timeout does not work?

转载 作者:太空狗 更新时间:2023-10-30 01:37:28 28 4
gpt4 key购买 nike

我正在尝试在串行端口上使用 pexpect。我按照建议使用 fdpexpect。但我注意到 expect() 不遵守超时。相反,EOF 发生了。

ser = serial.Serial(sys.argv[1], 9600)
fd = fdpexpect.fdspawn(ser.fd)
fd.send('%s\r' % username)
i = fd.expect(['Password:', pexpect.TIMEOUT], timeout=30)
if i == 0:
fd.send('%s\r' % password)
else:
print 'Boom!'

似乎 pexpect.exceptions.EOF 几乎立即引发,而不是捕获任何一个。如果我将 pexpect.EOF 添加到匹配列表中,EOF 将立即匹配。当然,它是一个串行端口,数据很可能还没有到达。如果我在 fd.expect() 之前添加 time.sleep(1),它将起作用。但这违背了期望的目的。我做错了什么吗?

最佳答案

任何时候当你使用 fdpexpect 而不是普通的 pexpect 生成终端时,你都必须担心会到达该文件流的 EOF。有关详细信息,请参阅此答案:https://stackoverflow.com/a/25770830 .

我还发现将 maxread=1 添加到 pexpect.fdpexpect.fdspawn 可以帮助解决这个问题,但这也会减慢阅读文本的速度。

关于Python 预期 : fdpexpect + pyserial == timeout does not work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36879701/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com