Как: имитировать нажатия клавиш в оболочке для приложения, работающего во встроенной цели - PullRequest
3 голосов
/ 28 декабря 2010

Я пишу сценарий автоматизации, который выполняется на встроенной цели Linux.

Часть сценария включает в себя запуск приложения на цели и получение некоторых данных из стандартного вывода. Стандартным выводом здесь является соединение ssh-терминала, которое я имею к цели.

Однако эти данные доступны на stdout только в том случае, если нажаты определенные клавиши, и нажатие клавиши должно быть выполнено на клавиатуре, подключенной к встроенной цели, а не на хост-системе, с которой я ssh'd в цель , Есть ли способ симулировать это?

Edit: Разработка того, что мне нужно -

У меня есть приложение OpenGL, которое я запускаю на встроенной цели linux (работает как обычный linux). Это отображает некоторую графику на устройстве отображения встроенной системы. Нажатие f на клавиатуре, подключенной к цели, выводит данные fps на терминал ssh, с которого я контролирую цель.

Поскольку я автоматизирую процесс запуска этого приложения OpenGL и получения значений fps, я не могу ожидать, что клавиатура будет подключена к цели, не говоря уже о том, что пользователь будет вводить нажатие клавиши на встроенной целевой клавиатуре. Как мне это сделать?

Редактировать 2: Expect не работает, так как ожидаемо может выдавать штрихи только на ssh-терминал. Клавиша, которую мне нужно отправить в приложение, должна исходить от клавиатуры, подключенной к цели (это та часть, которая нуждается в симуляции без фактического подключения клавиатуры к ней).

Спасибо.

Ответы [ 5 ]

4 голосов
/ 28 декабря 2010

Это в точности домен Ожидается , который стекапроцесс случайно распознает с помощью собственного тега .

Самый быстрый способ достиженияАвтоматизация OpenGL, к которой вы стремитесь, при изучении как можно меньшего количества Expect по мере необходимости, скорее всего достигается с помощью autoexpect .

2 голосов
/ 28 декабря 2010

Я сейчас не дома (так что Linux нет под рукой), поэтому не могу попробовать. Но вы должны иметь возможность эмулировать нажатия клавиш, если вы выводите нужные нажатия клавиш (возможно, коды клавиатуры) на узел клавиатуры, расположенный под / dev на вашей цели. Это может быть сделано через ваш SSH.

1 голос
/ 28 декабря 2010

Решение, которое удовлетворяло бы как QA, так и производственному тесту, состоит в том, чтобы создать аппаратную часть, которая выглядит как клавиатура для встроенного устройства и имеет внешнее управление. В зависимости от того, насколько сложным должен быть ваш ввод, это может быть что угодно: от приобретенной в магазине клавиатуры с пробелом, приклеенным вниз к микроконтроллеру, говорящему о PS / 2 или USB на стороне клавиатуры, и что-то еще (последовательный, USB, Ethernet) на контроле сторона.

С библиотекой LUFA очень просто сделать USB-клавиатуру из деталей серии AT90USB. Некоторые из них даже имеют 2 порта USB и могут быть автоматизированы через USB, подключенный к другой системе (или, если вы хотите стать дерзким, вы можете сделать так, чтобы он перечислял как клавиатуру, так и устройство управления, и проходил через клавиатуру через встроенную систему).

0 голосов
/ 27 марта 2014

Как насчет создания текстового файла с входными данными и его запуска следующим образом?

cat inputs.txt | target_executable

Содержимое файла input.txt может выглядеть примерно так:

y
y
y
n
y
0 голосов
/ 08 января 2011

Как насчет echo "f" > /dev/console ?

...