На самом деле я ничего не знаю о последовательном порту. Но я вижу пример отправки его по команде:
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 $
Таким образом вы получите правильную коммуникацию модема.