Python/Pexpect无法识别通过串行方式发送Control-R

Python/Pexpect无法识别通过串行方式发送Control-R,python,serial-port,escaping,special-characters,pexpect,Python,Serial Port,Escaping,Special Characters,Pexpect,我正在编写一些Python代码来检测选项ROM初始化的开始,并发送适当的控制字符以进入选项ROM设置实用程序。这在大多数情况下(control-C、control-Y、control-S…)都有效,但当control-R是所需的键时,字符无法识别 我怀疑这是因为control-R是一种特殊的控制字符,终端正在解释它,而不是传递它,但是找不到对它的任何引用。我试着用ESC和其他一些控制字符作为前缀,但似乎无法识别它。代码很简单: CONTROL_R = '\x12' print("

我正在编写一些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
感谢您的指点和建议。

spawn\u id.sendcontrol('r')


从文档中:

我从一位同事那里了解到,Control-R在bash shell中启动反向I-search。这会导致外壳在由选项ROM代码处理字符之前吃掉字符。感谢各位提出的建议。

您希望拦截的“终端”是什么?您是否生成一个shell来运行该实用程序,而不是直接生成它?您是否可以显示如何创建
spawn\u id
?我使用的是pexpect.spawn('ssh-o StrictHostKeyChecking=no-o UserKnownHostsFile=/dev/null-o PubkeyAuthentication=nousername@pw)如果你在一个真正的终端上运行这个命令,Ctrl-R有效吗?您可以在SSH服务器上尝试吗?Ctrl-R在真正的终端上工作没有问题。运行脚本时,按Ctrl-R的预期返回18。我认为
sendcontrol('R')
相当于
send('\x12')
,但值得一试,以防pexpect中出现错误。