我最近面临一个相当奇怪的任务,其中一个结果是使用DTMF(又名“触摸音”)音调来控制非X Linux计算机终端的必要性。计算机有一个调制解调器,可以通过ALSA访问,因此sox“rec”程序,这是我通过阅读输入。所讨论的计算机是完全隔离的,没有任何以太网或其他网络接口。我使用的Goertzel算法实现效果很好,eSpeak语音合成引擎也是唯一的输出源;这应该适用于任何Touch Tone手机。它回读两个输入(输入为八进制数字,一次一个ASCII字节)以及任何shell反馈的内容 - 提示,命令输出等,使用ASCII助记符控制字符。将按键从Python插入到Linux控制台中
当前我用于与dash
进行交互的方法以及通过它启动的程序是pexpect
模块。但是,我需要它能够根据需要回读光标所在行的全部内容,我不记得pexpect
可以做到这一点(如果是这样,我不能说)。我能想到的唯一的另一个解决方案是以某种方式使用Python来控制或充当键盘和控制台驱动程序。
这的确是唯一的解决方法(如果可以的话,甚至可以用Python吗?),还是有另一种直接访问控制台内容的方式?
编辑︰通过愚蠢的运气,我刚刚发现SVN版本的PExpect有pexpect.screen。但是,它没有任何实际运行程序的方法。我将不得不关注它的发展。
好吧,但我该如何在它内部运行一个shell(如'dash')? – mmirate 2011-04-30 10:30:40
更确切地说,我如何在不重新实现'readline'的情况下这样做? – mmirate 2011-04-30 20:32:36
好吧,如果'readline'是你所用的'sh',那么readline就有[python bindings](http://docs.python.org/library/readline.html)。 – Anish 2011-05-04 00:39:50