2012-01-28 1225 views
3

我有一个脚本,我在Android手机的adb shell(/ system/etc目录)中运行,它可以通过发送/接收单个AT命令。 脚本本身(如果在adb shell中运行)工作正常。这就是它的样子:通过adb发送AT命令到Android手机通过adb

cat /dev/pts/7 & 
echo -e $1\\r > /dev/pts/7 

下面是亚行外壳输出:

# ./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) 

# 

现在我想从我的电脑上运行PowerShell脚本,从而最终通过控制调制解调器AT命令调用该脚本,但没有任何反应。 例如,下面的powershell脚本会在+ 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命令坐在设备缓冲器启动后),或在+警察(回波) ,或根本没有,但从来没有+ COPS:0,0,“AT & T”,我期望的6。你能帮我弄清楚发生了什么事以及如何解决它?理想情况下 我希望能够执行命令,将控制权返回给PowerShell,并使输出可用于进一步处理。 我也接受其他解决方案来实现相同的事情。 将不胜感激您的帮助。谢谢!

+0

从cmd.exe工作是否一样?闻起来像一个传递问题的论点。尝试引用将引号传递给adb.exe,就像这个'&$ adb shell/system/etc/sendATCommand“”“$ atCommand”“”''。 – 2012-01-28 01:51:03

+0

感谢Andy提供的线索,我没有机会尝试;明天会做。 – 2012-01-31 01:30:10

回答

0

不确定回答你的问题,我的手机不是Android,但是当我通过蓝牙或USB连接到我的电脑时,会创建一个COM端口。因此,我在.NET SerialPort class的顶部构建了一个装配工具,允许使用电话调制解调器发送SMS。

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

+0

感谢您的建议。我已经以这种方式实现了它(即,使调制解调器通过串行端口与PC通信),但是我真的需要通过adb外壳在AP和调制解调器之间执行AT通信的能力。 – 2012-01-31 01:33:32