Недавно я столкнулся с довольно странной задачей, одним из результатов которой стала необходимость использования тонов DTMF (так называемый "Touch Tone") для управления терминалом компьютера, отличного от X Linux.На компьютере есть модем, к которому можно получить доступ через ALSA, и, следовательно, программа sox "rec", через которую я читаю ввод.В остальном рассматриваемый компьютер полностью изолирован, не имея Ethernet или других сетевых интерфейсов.Реализация алгоритма Гёртцела, которую я использую, работает очень хорошо, как и механизм синтеза речи eSpeak, который является единственным источником вывода;это должно работать с любым телефоном с тональным набором.Он считывает как входные данные (входные данные являются восьмеричными цифрами, один байт ASCII за раз), так и все, что возвращает оболочка dash
- приглашение, выходные данные команд и т. Д., Используя мнемонику ASCII для управляющих символов.
Текущий метод, который я использую для взаимодействия с dash
и запускаемыми через него программами, - это модуль pexpect
.Однако мне нужно, чтобы он мог по требованию читать все содержимое строки, на которой расположен курсор, и я не помню, чтобы pexpect
мог это сделать (если это так, я не могу сказать.).Единственное другое решение, которое я могу придумать, - это каким-то образом использовать Python для управления драйверами клавиатуры и консоли или для их выполнения.
Действительно ли это единственный способ сделать это (и если да, то, это вообще возможно с Python?), или есть другой способ прямого доступа к содержимому консоли?
Редактировать: Благодаря глупой удаче, я только недавно обнаружил, чтоВерсия PExpect для SVN имеет pexpect.screen .Тем не менее, он не имеет никакого способа запустить программу под ним.Мне придется следить за его развитием.