Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Переключения DTR DSR модема вызывают input/output error в errno
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
Kirill_Good
Добрый день!

Возникла проблема работы приложения с GSM модемом через ttySx(COM). Последовательность действий такова. Я открыл файл модема. Пощелкал DTRом, осциллографом увидел переключения. ioctl отработал без ошибок. Сделал звонок. Чтобы отключиться поднимаю DTR. Он поднимается. Потом чтобы продолжить работу опускаю DTR. ioctl возвращает -1, в errno input/output error. Далее любые функции работы с файловым дескриптором дают те же ошибки. Помогает только переоткрытие файла. Та же ситуация с DSR. После того как отключается удаленный абонент, DSR физически опускается и функции начинают возвращать -1.

Как это побороть?

Файл открылся только в NON_BLOCK режиме. В блокируюшем нет возврата из функции open().

Спасибо!
kurtis
Можно исходники глянуть, чего оно там делает

Если у вас GSM модем через "обычный" tty интерфейс, то для общения с модемом, можно использовать утилиту chat (есть в бизибоксе)
sasamy
Цитата(Kirill_Good @ Sep 5 2012, 09:05) *
Добрый день!

Возникла проблема работы приложения с GSM модемом через ttySx(COM). Последовательность действий такова. Я открыл файл модема. Пощелкал DTRом, осциллографом увидел переключения. ioctl отработал без ошибок. Сделал звонок. Чтобы отключиться поднимаю DTR.


интересно - нафига это нужно sm.gif
Kirill_Good
Цитата(sasamy @ Sep 5 2012, 10:16) *
интересно - нафига это нужно sm.gif

DTR переключать - для разрыва соединения.
sasamy
Цитата(Kirill_Good @ Sep 5 2012, 10:57) *
DTR переключать - для разрыва соединения.


ваш GSM модем не поддерживает переход в командный режим (+++) ?
Kirill_Good
Цитата(kurtis @ Sep 5 2012, 09:45) *
Если у вас GSM модем через "обычный" tty интерфейс, то для общения с модемом, можно использовать утилиту chat (есть в бизибоксе)

Общение нужно самому реализовать.

Цитата(sasamy @ Sep 5 2012, 11:06) *
ваш GSM модем не поддерживает переход в командный режим (+++) ?

Спасибо! Я не знал об этой команде. То есть в потоке данных мне нужно передать +++ затем ATH и произойдет разрыв? А как отловить, разрыв от удаленного? Парсить поток на "No carrier"?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.