3

我有一个小脚本,我在 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,并提供可用于进一步处理的输出。我也愿意接受其他解决方案来实现同样的事情。非常感谢您的帮助。谢谢!

4

1 回答 1

0

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

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

于 2012-01-29T10:51:23.320 回答