У меня есть небольшой скрипт, который я запускаю в оболочке adb телефона Android (/ system/etc), который позволяет общаться с модемом, отправив/получая один AT команда. Сам сценарий, если он запущен в оболочке adb, работает нормально. Вот как это выглядит:Отправка команд AT из сценария Powershell на Android-телефон через adb
cat /dev/pts/7 &
echo -e $1\\r > /dev/pts/7
Вот выход в ADB оболочки:
# ./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 отправит команду в + копы? для проверки оператора, к которому мобильный зарегистрирован:
$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 команды, сидя в буфере устройства после загрузки), или на + гаишников (эхо) , или ничего вообще, но never + COPS: 0,0, "AT & T", 6 которое я ожидаю. Не могли бы вы помочь мне выяснить, что происходит и как это можно исправить? В идеале Я хочу, чтобы иметь возможность выполнять команду, возвращать управление в powershell и иметь выход для дальнейшей обработки. Я также открыт для других решений для реализации того же самого. Буду признателен за вашу помощь. Благодаря!
Работает ли то же самое с cmd.exe? Пахнет проблемой передачи аргументов. Попробуйте процитировать, чтобы передать кавычки в adb.exe, как этот '& $ adb shell/system/etc/sendATCommand" "" $ atCommand "" "'. –
Спасибо за подсказку Энди, у меня не было возможности попробовать это; сделают это завтра. –