4

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

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

但是,仅当按下某些键并且必须在连接到嵌入式目标的键盘上而不是在我从 ssh 进入目标的主机系统上完成按键时,此数据才在标准输出上可用。有没有办法模拟这个?

编辑:详细说明我需要什么-

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

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

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

谢谢。

4

5 回答 5

5

This is exactly the domain of Expect , which stackoverflow incidentally recognizes with its own tag.

The quickest way to achieve the OpenGL automation you're after, while learning as little of Expect as necessary, is likely by way of autoexpect.

于 2010-12-28T11:48:51.377 回答
2

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

于 2010-12-28T11:42:54.837 回答
1

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

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

于 2010-12-28T19:57:28.720 回答
0

怎么样echo "f" > /dev/console ?

于 2011-01-08T13:26:49.470 回答
0

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

cat inputs.txt | target_executable

input.txt 的内容可能如下所示,

y
y
y
n
y
于 2014-03-27T05:14:28.333 回答