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

2023-11-29

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

所以基本上我在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)调用 已连接,但在解决这两个问题之前没有办法做到这一点。预先非常感谢!


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

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

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

OK
$

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于将 AT 命令发送到调制解调器的 ADB shell 脚本 - 无法将控制权返回到 shell 并捕获输出 的相关文章

随机推荐