Python pexpect:fdpexpect pyserial == timeout不起作用?

Python pexpect:fdpexpect pyserial == timeout不起作用?,第1张

概述我想在串口上使用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.TIME 我想在串口上使用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 pexpect:fdpexpect pyserial == timeout不起作用?全部内容,希望文章能够帮你解决Python pexpect:fdpexpect pyserial == timeout不起作用?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1196121.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存