Перейти к содержанию
    

Переключения DTR DSR модема вызывают input/output error в errno

Добрый день!

 

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

 

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

 

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

 

Спасибо!

Изменено пользователем Kirill_Good

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Если у вас GSM модем через "обычный" tty интерфейс, то для общения с модемом, можно использовать утилиту chat (есть в бизибоксе)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день!

 

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

 

интересно - нафига это нужно :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

интересно - нафига это нужно :)

DTR переключать - для разрыва соединения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

DTR переключать - для разрыва соединения.

 

ваш GSM модем не поддерживает переход в командный режим (+++) ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если у вас GSM модем через "обычный" tty интерфейс, то для общения с модемом, можно использовать утилиту chat (есть в бизибоксе)

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

 

ваш GSM модем не поддерживает переход в командный режим (+++) ?

Спасибо! Я не знал об этой команде. То есть в потоке данных мне нужно передать +++ затем ATH и произойдет разрыв? А как отловить, разрыв от удаленного? Парсить поток на "No carrier"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...