Как работать с последовательным портом в Android-мобиле?

На самом деле я ничего не знаю о последовательном порту. Но я вижу пример отправки его по команде:

echo -e "AT" > /dev/smd0 

Что такое / dev / smd0 и почему они иногда заменяют его / dev / ttyS0.

/dev/smd0 и /dev/ttyS0 – файлы устройств . Такие файлы представляют собой виртуальные файлы, которые предоставляют интерфейс операций ввода-вывода файлов для работы с некоторыми основными предметами, такими как, например, аппаратные ресурсы, такие как последовательные порты, жесткие диски и память, или с не-аппаратными ресурсами, такими как информация о процессе, ввод случайных чисел, экран терминала Выход и т. Д.

Файлы устройств поставляются в двух вариантах, символах и блоках. Последовательные порты являются символьными устройствами, вы можете проверить, что c является первым символом на выходе из ls -l :

 $ ls -l /dev/ttyS0 crw-rw----. 1 root dialout 4, 64 Apr 7 00:25 /dev/ttyS0 $ 

/dev/ttyS0 – это имя устройства, которое используется для последовательных портов на настольных компьютерах Linux, соответствующих COM1 в DOS / Windows (в самые, очень ранние дни использования linux /dev/cua вы могли иногда сталкиваться с ссылками на это) , Для виртуальных последовательных интерфейсов USB для мобильных телефонов /dev/ttyACM0 и /dev/ttyACM1 используются. Некоторые другие устройства используют / dev / ttyUSB0. Для Android существует несколько разных имен файлов устройств, в которых /dev/smd0 является одним из них. Ваш телефон может использовать другой, поэтому вы должны проверить, что именно следует использовать для своего телефона.


Команда echo -e "AT" > /dev/smd0 не имеет смысла. Параметр -e позволяет интерпретировать символы с echo "AT" > /dev/smd0 , но поскольку следующая строка не содержит таких символов, она эквивалентна просто echo "AT" > /dev/smd0 .

Однако при отправке AT-команд модему командную строку следует прервать только с помощью \r и ничего больше. Это предусмотрено V.250 .

Поэтому правильная команда для отправки команды «AT» на модем должна быть

 echo -n -e "AT\r" > /dev/smd0 

Но даже когда вы добираетесь до правильной отправки AT-команды модему, вы должны прочитать ответы от модема. Закрытие и повторное открытие файла устройства несколько раз при выполнении этого (что вы сделаете, запустив последовательность команд оболочки) – это не очень хороший способ, поэтому я бы рекомендовал вам использовать мою программу atinout, которая специально Написанное для использования для командной команды AT-команды:

 $ echo AT | atinout - /dev/smd0 - AT OK $ 

или

 $ echo AT > input.txt $ atinout input.txt /dev/smd0 output.txt $ cat output.txt AT OK $ 

Таким образом вы получите правильную коммуникацию модема.

  1. Использование c4droid
  2. Открыть .c файл
  3. Измените строку 173 на printf («atinout version … \ n»); … номер версии
  4. Теперь скомпилируйте свой код в c4droid
  5. Получить файл из каталога c4droid cp data / data / com.n0n3m4.droidc / files / temp / sdcard
Intereting Posts