如何:将shell中的击键输入模拟到嵌入式目标中运行的应用程序

时间:2010-12-28 11:04:15

标签: bash shell keyboard embedded-linux keystroke

我正在编写一个在嵌入式linux目标上运行的自动化脚本。

脚本的一部分涉及在目标上运行应用程序并从stdout获取一些数据。这里的stdout是我对目标的ssh终端连接。

但是,只有在按下某些键并且必须在连接到嵌入式目标的键盘上进行按键操作而不是主机系统上才能在stdout上提供此数据,我已将ssh进入目标。有没有办法模拟这个?

编辑: 阐述我的需求 -

我有一个OpenGL应用程序,我在嵌入式linux上运行(像普通的linux一样工作)目标。这会在嵌入式系统的显示设备上显示一些图形。按连接到目标的键盘上的f将fps数据输出到我控制目标的ssh终端上。

由于我正在自动运行这个OpenGL应用程序并获得fps分数的过程,我不能指望键盘连接到目标,更不用说期望用户在嵌入式目标键盘上输入击键。我该怎么做?

编辑2: 期望不起作用,因为期望只能向ssh终端发出笔画。我需要发送到应用程序的击键必须来自连接到目标的键盘(这是需要模拟的部分,而实际上没有键盘连接到它)。

感谢。

5 个答案:

答案 0 :(得分:4)

正好 Expect的域,堆栈溢出偶然识别出自己的tag

实现您所追求的OpenGL自动化的最快捷方式,即尽可能少地学习Expect,可能是autoexpect

答案 1 :(得分:2)

我现在不在家(所以没有linux),所以实际上无法尝试。但是,如果您将所需的按键(可能是键盘代码)回显到位于目标上/ dev下的键盘节点,您应该能够模拟击键。这可以通过你的ssh来完成。

答案 2 :(得分:1)

满足QA和制造测试的解决方案是构建一个看起来像嵌入式设备的键盘并具有外部控制的硬件。根据您的输入需要多大的复杂程度,这可以是商店购买的键盘,其中空格键连接到微控制器,键盘上的PS / 2或USB,以及控制器上的其他东西(串行,USB,以太网)侧。

使用LUFA库,使用AT90USB系列部件制作USB键盘非常容易。其中一些甚至有2个USB端口,可以通过连接到另一个系统的USB自动化(或者如果你想要变得厚颜无耻,你可以将它作为键盘和控制设备枚举并通过嵌入式系统循环键盘输入)。

答案 3 :(得分:0)

echo "f" > /dev/console ?

怎么样?

答案 4 :(得分:0)

如何使用输入创建文本文件并运行如下?

cat inputs.txt | target_executable

inputs.txt的内容可以是以下内容,

y
y
y
n
y