【发布时间】:2016-10-23 04:39:17
【问题描述】:
在板子启动消息期间寻找正确的方法来检测一个关键字。 检测到关键字后,一秒后发送回车键。 内核是Linux。
# Serial port inisialisation is finished here.
# Read boot message
($count, $result) = $ob->read(300); # at least 300 chars coming till keyword appear
if ($result =~ m/Booting_up/) {
print "send Enter ...\n";
sleep 1;
$ob->write("\r\n");
}
感谢提示
【问题讨论】:
-
也许这对所有人来说都很清楚——问题是什么?
$ob->read是什么? -
$ob->read 打印正确的启动消息,但它大部分时间都错过了该关键字。在腻子控制台中,用户必须在看到该关键字后按 Enter 键才能进入设备配置菜单,否则会继续正常启动(类似于 PC 重启然后用户按 F2 进入 BIOS 菜单)。 . perl 太慢所以反应?
-
感谢您的解释。但是......它是什么类/模块?
read方法返回什么?你正在读入两个变量——得到什么? “错过了那个关键字”是什么意思?如果它收到带有关键字的消息,它怎么会错过它? -
read可以在打印时一次提供一行吗?然后您可以执行while (read(...))并在收到每一行时检查消息。例如。你能告诉我们$ob来自哪个类/模块吗?或者您能澄清一下read的作用/方式吗? -
嗨,这是我的第一个串口脚本,所以无法进一步评论。现在我可以通过从头开始发送“\n”来停止启动消息(不检测 Booting_up 关键字)。效果还是一样的,停止引导信息。但是现在在发送 $ob->write("\n\n") 后看到奇怪的行为我不能发送超过 16 个字符和随后的 $ob->write
$ob->write("\n\n"); sleep 3; $ob->write("cmd"); // cmd length only 16 chars
标签: linux perl serial-port tty