【发布时间】:2012-02-20 23:19:14
【问题描述】:
我有一个小脚本,我在 Android 手机的 adb shell(/system/etc 目录)中运行,它可以通过发送/接收单个 AT 命令与调制解调器通信。 脚本本身,如果在 adb shell 中运行,可以正常工作。这就是它的样子:
cat /dev/pts/7 &
echo -e $1\\r > /dev/pts/7
这是 adb shell 中的输出:
# ./sendATCommand "at+cops?"
./sendATCommand "at+cops?"
#
+COPS: 0,0,"AT&T",6
OK
/dev/pts/7: invalid length
(need to press ENTER to return control to adb shell)
#
现在我想从我的 PC 上运行的 powershell 脚本调用此脚本,从而最终通过 AT 命令控制调制解调器,但没有任何反应。 例如,下面的 powershell 脚本将发送命令 at+cops?检查手机注册到的运营商:
$adb = [IO.Path]::Combine([IO.Path]::Combine($Env:ANDROID, "platform-tools"), "adb.exe")
& $adb remount
$atCommand = "at+cops?"
& $adb shell /system/etc/sendATCommand $atCommand
输出有时可能看起来像 +ATCMD(启动后位于设备缓冲区中的任何残留 [专有]AT 命令),或者 at+cops?(echo),或者什么都没有,但是 从不 +COPS: 0,0,"AT&T",6 我期望。你能帮我弄清楚发生了什么以及如何解决它吗?理想情况下 我希望能够在命令中执行,将控制权返回给 powershell,并提供可用于进一步处理的输出。 我也愿意接受其他解决方案来实现同样的事情。 非常感谢您的帮助。谢谢!
【问题讨论】:
-
在 cmd.exe 中是否也有同样的效果?闻起来像一个参数传递问题。尝试引用以将引号传递给 adb.exe,例如
& $adb shell /system/etc/sendATCommand """$atCommand"""。 -
感谢安迪提供的线索,我没有机会尝试;明天会做。
标签: android powershell command adb at-command