【发布时间】:2013-11-04 22:50:25
【问题描述】:
我正在编写一些 Python 代码来检测选项 ROM 初始化的开始,并发送适当的控制字符以进入选项 ROM 设置实用程序。这在大多数情况下都有效(control-C、control-Y、control-S...),但是当 control-R 是所需的键时,无法识别字符。
我怀疑这是因为 control-R 是终端正在解释而不是传递的某种特殊控制字符,但找不到对它的任何引用。我试过用 ESC 和其他一些控制字符作为前缀,但似乎无法识别它。代码很简单:
CONTROL_R = '\x12'
print("Sending control-R to enter setup")
spawn_id.send(CONTROL_R) # send character to console
感谢任何指针或建议。
【问题讨论】:
-
您希望拦截的这个“终端”是什么?您是在生成一个 shell 来运行该实用程序而不是直接生成它吗?
-
你能展示一下你是如何创建
spawn_id的吗? -
我正在使用 pexpect.spawn('ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o PubkeyAuthentication=no username@pw)
-
如果您在真实终端中运行该命令,Ctrl-R 是否有效?可以在 SSH 服务器上用this script 试试吗?
-
Ctrl-R 在真正的终端上运行没有问题。运行脚本按 Ctrl-R 的预期返回 18。
标签: python serial-port escaping special-characters pexpect