LINUX.ORG.RU

TTY. Взаимодействие с GSM-модемом

 , , , ,


0

1

Добрый день.

Являюсь обладателем GSM-модемов M590E, SIM800L, которые управляются посредством AT команд через UART.

Столкнулся с проблемой многократного дублирования команд и ответов команд при работе с Linux. В Винде работает без нареканий. Пример:

at
OK
at+csq
+CSQ: 23,0

OK

В Linux получаю бесконечное повторение введенной команды:

at+csq


+CSQ: 22,0



OK

at+csq


+CSQ: 22,0



OK



+CSQ: 22,0

Когда я раньше работал с модемом, я давал, например, команду echo -e 'AT\x0D' > /dev/ttyS1. Без явного указания перевода строки \x0D модем команду не воспринимал, \n не подходило. Сейчас же принимает любой набор символов без символов перевода каретки или переноса строки. Так выглядит ошибочная команда: echo -e 'attatatat' > /dev/ttyS1. Похоже на то, что сама консоль подставляет в выдачу символ \x0D

attatatat
attatatat
attatatat
attatatat
...
attatatat


ERROR

attatatat


ERROR



ERROR

attatatat


ERROR



ERROR

Что я проверил: -Питания всем устройствам хватает, просадки отсутствуют.

-Проверял на разных и абсолютно новых модемах.

-Разные устройства (ПК, ноут, Orange Pi Zero).

-Разные ОС (Ubuntu 18.04, различные сборки Armbian).

-На OPi Zero разные интерфейсы UART + USB ttl converter.

-Короткое замыкание между RX и TX отсутствует.

-Уровни UART согласованы.

-Скорости везде одинаковые, =9600 бод (на других скоростях картина не меняется.

Помогите пожалуйста решить проблему.

ты как результат читаешь то? используй minicom или иные предназначенные для этого терминальные программы

anonymous ()
Ответ на: комментарий от bohdan1993

А вы «cat» в фоне запускаете, когда делаете «echo»?

Если у вас заработает через «minicom», можете поиграть с «stty» и может будет работать через «echo».

mky ★★★★★ ()
Ответ на: комментарий от anonymous

Спасибо за наводку на minicom. Cделал через него настройки порта 9600 бод, 8 бит, +1 бит четности. Теперь с модемом можно нормально взаимодействовать. И через cat /dev/ttySx данные тоже нормально считываются.

bohdan1993 ()

Мой любительский опыт общения с «потребительскими» модемами в Linux так «объясняет» Ваши наблюдения

Столкнулся с проблемой многократного дублирования команд и ответов команд при работе с Linux.

Возможно модем был предварительно переведен в какой-либо режим сторонним ПО. В частности после ModemManager наблюдается что-то похожее. Некоторые модемы после подключения спамят каким-либо сообщением*. Отправка команды или переключение режима останавливает этот поток. Поискать в документации или в интернете.

echo -e 'AT\x0D' > /dev/ttyS1
Вот же
echo -e 'AT\r' > /dev/ttyS1
Потому, что
echo -e '\n'|hd
00000000  0a 0a                                             |..|
00000002
echo -e '\r'|hd
00000000  0d 0a                                             |..|
00000002

anymouze ★★ ()
Ответ на: комментарий от bohdan1993

он тебе еще и модем проинициализировал. посмотри какой там скрипт инициализации.

anonymous ()
Ответ на: комментарий от anonymous

возможно, но необязательно. бывает, что схожие ситуации возникают по различным причинам.

anymouze ★★ ()
Ответ на: комментарий от linuxnewbie

Команды модему должны завершаться последовательностью \x0D\x0A. На что я и указал, и привёл пояснения наглядный (как мне показалось) пример почему должно быть echo -e 'AT\r' , а не echo -e 'AT\n'.

\n в конце добавляет echo

Это понятно, известно и никак не мешает.

нужно писать echo -n

Нет-нет! Так мы с модемом не «договоримся». Но можно писать так echo -en 'AT\r\n' > /dev/ttyS1

anymouze ★★ ()

minicom или kermit. Второй мне нравится больше.

А cat-ом просто так не получится прочитать.

a1batross ★★★★★ ()
Ответ на: комментарий от anonymous

Да, конечно. Но речь шла про «тонкости» использования связки echo & cat. В таких «инструментах» есть что-то притягивающе-завораживающее: простота*, «магия и хакерство». Кроме того, это наглядная иллюстрация концепции «всё файл». На самом деле для успешного использования «этого» требуется погружение в детали: разные производители по-разному реализуют «стандартный AT-модем».

anymouze ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.