Разговор с модемом с помощью AT-команд на Android

Я пытаюсь поговорить с модемом samsung galaxy s2 plus и huawei p1 xl (u9200), отправляющим AT-команды, но не могу получить никакого результата. Я отправляю команды с помощью оболочки adb и просматриваю журналы с помощью logcat.

В samsung, когда я запускаю cat /proc/tty/drivers, я получаю следующее:

/dev/tty             /dev/tty        5       0 system:/dev/tty
/dev/console         /dev/console    5       1 system:console
/dev/ptmx            /dev/ptmx       5       2 system
/dev/vc/0            /dev/vc/0       4       0 system:vtmaster

rfcomm               /dev/rfcomm   216 0-255 serial
g_serial             /dev/ttyGS    237 0-3 serial
serial               /dev/ttyS       4 64-67 serial
pty_slave            /dev/pts      136 0-1048575 pty:slave
pty_master           /dev/ptm      128 0-1048575 pty:master
unknown              /dev/tty        4 1-63 console

Похоже, я должен отправить команду /dev/ttyGS0, но он не отвечает. Я пробовал следующие команды:

echo "AT\r" > /dev/ttyGS0
echo "ATD12345678900;\r" > /dev/ttyGS0

но ничего не происходит. На самом деле, я не уверен, что должен отправлять команды в этот файл, но другие тоже не отвечают. Я прочитал статью о XDA-разработчиках, но не помощь.

С Huawei я знаю, какой файл мне следует использовать, но я не могу сделать вызов для передачи данных. Я могу сделать обычный голосовой вызов, но не могу выполнить AT+CSNS=4. Просто не работает. Также у меня есть LG P765, который основан на аналогичном чипсете, и на LG я могу совершать вызовы данных. Кто-нибудь может сказать мне, что мне делать?

Все устройства рутированы.


person MightySeal    schedule 18.07.2013    source источник
comment
Можете ли вы загрузить код, как вы выполняете команду AT+CSNS=4 с помощью программы?   -  person Vigbyor    schedule 18.07.2013
comment
Я выполняю его с помощью оболочки adb. Команда следующая: echo AT+CSNS=4 › /dev/xmd-tty0   -  person MightySeal    schedule 18.07.2013
comment
Не уверен на 100%, но для выполнения вышеуказанной команды через программу вам может потребоваться рутировать ваше устройство. Используя Runtime Class, вы можете достичь своей цели.   -  person Vigbyor    schedule 18.07.2013
comment
Все устройства рутированы, и я выполняю команду как суперпользователь.   -  person MightySeal    schedule 19.07.2013
comment
Поддерживает ли используемая вами версия echo параметр -e? Возможно, он неправильно интерпретирует \r.   -  person Jesse J    schedule 13.03.2014


Ответы (2)


Я предлагаю вам попробовать отправить AT-команду с помощью программы atinout, например вместо перенаправления вывода на модемное устройство запустите

echo "ATD12345678900;" | atinout - /dev/ttyGS0 -

Я предполагаю, но может случиться так, что команда echo в оболочке adb не интерпретирует \r как что-то особенное (это, по крайней мере, объясняет отсутствие ответа вообще). Используя atinout, вы гарантируете, что командные строки AT правильно завершаются с помощью \r, а захват должен быть проще и работать намного надежнее.

person hlovdal    schedule 12.03.2014
comment
Вам нужно скомпилировать его с помощью подходящего кросс-компилятора, который, как я полагаю, доступен через инструменты NDK, но я никогда не делал этого сам, поэтому на этом мои знания заканчиваются. - person hlovdal; 25.08.2016

пожалуйста, попробуйте разные доступные порты, чтобы проверить результаты.

в моем андроиде он работает под номером порта /dev/pts/7.

также используйте другой терминал для чтения и записи

Терминал 1 :

echo -e "AT\r" > /dev/pts/7

Терминал 2 :

cat /dev/pts/7

также попробуйте использовать выполнение от имени пользователя root.

person Sanket Mehta    schedule 18.02.2016