【问题标题】:Sending AT commands from Powershell script to Android phone via adb通过 adb 从 Powershell 脚本向 Android 手机发送 AT 命令
【发布时间】: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


【解决方案1】:

不确定回答您的问题,我的手机不是 Android,但是当我通过蓝牙或 USB 将它连接到我的计算机时,会创建一个 COM 端口。因此,我在.NET SerialPort class 之上构建了一个组装工具,例如,它允许使用手机调制解调器发送短信。

我认为它适用于你的情况。

【讨论】:

  • 感谢您的建议。我已经以这种方式实现了它(即让调制解调器通过串行端口与 PC 通信),但我确实需要能够从 adb shell 执行 AP 和调制解调器之间的 AT 通信。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-02
相关资源
最近更新 更多