К COM-порту /dev/ttyS0 подключен мобильник Siemens-M50.
Параметры порта: 9600 8N1, Апп. упр. потоком: Да
Мне нужно отправить на него команду «AT» через BASH и увидеть ответ «OK». Команда «AT» нормально срабатывает в minicom, но мне нужно отправлять ее не интерактивно, а скриптом.
Я заранее в соседней консоли запускаю команду:
cat /dev/ttyS0
Затем в основной консоли даю команды:
stty 9600 cs8 -parenb crtscts -echo -F /dev/ttyS0
echo "AT" > /dev/ttyS0
Но в логе в соседней консоли ответа «OK» не видно. А спустя несколько секунд в логе появляется «ERROR».
Я проверил в minicom, при каких условиях появляется «ERROR» в ответ на команду «AT». Оказалось, что если набрать «AT», но потом не нажимать Enter, а просто ждать, то через некоторое время появится «ERROR».
Я подумал, что может быть до модема не доходит символ переноса строки при выполнении echo «AT» > /dev/ttyS0.
Поэтому я выполнил подряд две команды:
echo "AT" > /dev/ttyS0.
echo "ATZ" > /dev/ttyS0.
Если бы перевод строки не отправлялся, в логе бы было видно:
ATATZ
Однако, в логе я вижу
AT
ATZ
То есть, перевод строки таки отправляется.
Тогда вопрос: почему модем не отвечает «OK», а отвечает спустя некоторое время строкой «ERROR»?