ADB shell 脚本将 AT 命令发送到调制解调器 - 无法将控制权返回到 shell 并捕获输出

问题描述 投票:0回答:2

我已经发布了类似的问题,但仍然无法完成我的工作,所以这是第二次尝试,其中 我想更清楚地说明我的绊脚石。

所以基本上我在Android手机的adb shell中,通过发送AT命令与GPRS调制解调器通信。 我可以通过将 at 命令重定向到代表调制解调器的设备文件来完成此操作;我可以回读 使用在后台运行的 cat 实用程序进行响应(较早开始)。我在脚本中实现了它 它可以发送单个 AT 命令并读回响应。例如,这是一个脚本 发送至+警察?获取手机所在运营商的名称:

#SendATCommand script
cat /dev/pts/7 &
echo -e at+cops?\\r > /dev/pts/7

输出如下所示:

# ./sendATCommand 
./sendATCommand 
# 
+COPS: 0,0,"AT&T",6 

OK 
/dev/pts/7: invalid length 

现在有两个问题我无法解决:

  1. 我仍然需要手动按 ENTER 按钮才能返回 adb shell 提示符“#”。有办法返回吗 以编程方式显示“#”提示符?再说一次,我在 adb shell 中。
  2. 显示的响应无法捕获,无论是在变量中,还是在文件中,(例如(#./sendATCommand > output.txt) Output.txt文件将为空。我尝试了各种重定向,但仍然没有得到它工作。

任何人都可以帮我解决这两个问题(如果可能的话)吗?最终我希望这个小脚本是 从我的 Android 设备所在的 PC 上运行的“超级”脚本(例如 Perl 或 Powershell)调用 已连接,但在解决这两个问题之前没有办法做到这一点。提前非常感谢!

android shell command adb at-command
2个回答
0
投票

我建议你尝试我的atinout程序,它应该正是你所要求的:一个从命令行发送AT命令并捕获输出的程序。

在你的情况下,结果应该是这样的

$ echo 'at+cops?' | atinout - /dev/pts/7 -
+COPS: 0,0,"AT&T",6

OK
$

要捕获输出,只需输入文件名而不是最后一个

-


0
投票

我在将输出重定向到文件时遇到了类似的问题。我通过在 echo 命令前面添加 CMD /c 解决了我的问题。 IE。如果我理解正确,您需要告诉系统它需要等到命令完成执行,然后才将输出重定向到文件。我是在DOS下做的。

由于您在 ANDROID 上运行,请尝试在命令前面添加 sh -c 。希望能帮助到你。

© www.soinside.com 2019 - 2024. All rights reserved.