Как следует из названия вопроса, я собираюсь использовать 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. Я не хочу, чтобы кто-то написал код для меня, мне просто нужны рекомендации.
Спасибо за вашу помощь.
Шаг 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().