Отправка AT-команд в Android с помощью библиотеки atinout

1

Как следует из названия вопроса, я собираюсь использовать atinout library в своем приложении для Android, чтобы отправлять AT-команды на модем gsm и возвращать ответ.

Я искал SO и другие блоги, и лучший код, который у меня есть, - это что-то вроде этого, которое не делает ничего готового для вывода:

        Runtime r = Runtime.getRuntime();

        Process process = r.exec(new String[] {"su", "-c", "echo -n -e 'AT\r' > /dev/smd0"});

        BufferedReader in = new BufferedReader( new InputStreamReader(process.getInputStream()));

        String line = "";

        while ((line = in.readLine()) != null)
        {

           output+= line ;
        }



        tv.setText(output);

Итак, мои основные проблемы:

1 Как отправить простой AT commmad (например, AT Ok) на модем gsm устройства и "распечатать" ответ?

2- Я понятия не имею, как использовать библиотеку atinout в проекте приложения Android, так как она написана на языке C.

Кстати:

Я успешно связал свой телефон Sony Xperia M Dual (C2005) и установил на него SuperUser, поэтому это условие выполнено.

Кроме того, мне кажется, мне нужна фундаментальная подготовка по командам Unix и Serial communication, и я очень люблю изучать любой необходимый материал.

Наконец, Я нахожусь в сжатом сроке! Так что чем проще, тем лучше!

P.S. Я не хочу, чтобы кто-то написал код для меня, мне просто нужны рекомендации.

Спасибо за вашу помощь.

Теги:
jni
at-command

1 ответ

1
Лучший ответ

Шаг 0. Скомпилируйте atinout для Android и установите его. Для этого у меня нет опыта и я не могу помочь, кроме некоторых общих рекомендаций, которые вам нужно заменить CC = gcc в Makefile с помощью соответствующего кросс-компилятора.

Шаг 1. Запишите все AT-команды, которые вы хотите запустить в файл input.txt (используя обычные "\n" окончания строки, здесь не нужно связываться с '\ r').

Шаг 2. Измените строку exec на

Process process = r.exec(new String[] {"su", "-c",
                                      "atinout input.txt /dev/smd0 output.txt"});

Подождите, пока процесс завершит выполнение (process.waitFor() Я думаю).

Шаг 3. Откройте файл output.txt и прочитайте вывод из него вместо process.getInputStream().

  • 0
    спасибо, я следовал твоему руководству и мог заставить его работать
  • 0
    Хорошие новости. Рад, что смог помочь.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню