2012-01-28 271 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