Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Управление dial-up модемом с использованием AT команд напрямую из bash  (Прочитано 4601 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Щурин Юрий Евгеньевич

  • Автор темы
  • Участник
  • *
  • Сообщений: 212
  • "Войны ещё никого не сделали великим .." - м. Йода
    • Просмотр профиля
Добрый день, Всем.

Суть задачи - сделать рабочее место менеджера, звонящего по списку контактов, так чтобы набор номера осуществлялся из скрипта bash (предварительно привязанного к KAddressBook) с использованием аналогового USB модема, подключенного параллельно телефону.

Что сделано:
1. модем определяется и звонит стандартной звонилкой kde - kppp.
2. скрипт привязан к KAddressBook и получает номер из адресной книги как переменную.

Что осталось:
Научиться "напрямую" передавать номер для набора (см. п.2 входящая переменная) в виде AT команд в модем.

Что пробывал делать:
если сделать (сброс модема): echo "ATZ" > /dev/ttyACM0, то по запросу cat /dev/ttyACM0 модем отвечает: "ОК"
если сделать (набор номера): echo "ATDP5555555" > /dev/ttyACM0, то, во-первых, ничего не набирается, а во-вторых,по запросу cat /dev/ttyACM0 модем отвечает: "NO DIAL TONE".

Повторю, через стандартную звонилку и встроенное в нее терминальное окно все AT команды работают правильно.

Вопрос: Как научиться самому передавать из скрипта AT команды в аппарат (usb dialup модем).

P.S.: Набор номера - неединственная задача. Скорее всего, в будущем придется сооружать скрипт, который будет делать автодозвон, бросать трубки и "посылать на ...", короче это только первый шаг. ;)

Помогите люди добрые ...  ;)

« Последнее редактирование: 25 Июля 2014, 13:51:40 от Щурин Юрий Евгеньевич »

Оффлайн Nicom

  • Новичок
  • *
  • Сообщений: 29
    • Просмотр профиля
"NO DIAL TONE" означает что модем не видит тонального сигнала на линии при поднятии трубки. Можно попробовать перед набором номера послать ему команду ATX4или ATX0
Цитировать
http://book.itep.ru/10/at_109.htm
Команда X0 заставляет модем посылать сообщения в короткой форме. Номер набирается после паузы вне зависимости от наличия гудка. Состояние “занято” не распознается. После команды X1 модем посылает сообщения в полной форме. Команда X2 отличается от X1 и X0 тем, что набор номера выполняется лишь при наличии гудка. Команда X3 требует полной формы сообщений, номер набирается после паузы вне зависимости от наличия гудка, сигнал занято идентифицируется. Команда X4 сходна с X3, но требует для набора наличия гудка. При получении команд X2 или X4 модем разрывает связь и кладет трубку, если удаленный модем переведет линию в состояние BREAK на 1,6 секунды.

На OpenSUSE мы набираем номер такими скриптами:
#!/bin/sh
echo -e 'AT M0 L0 S11=65 S0=0 DT 9,8,5555555555,,,\r' > /dev/ttyS0
sleep 10
echo -e 'ATH0\r' > /dev/ttyS0
Дополнительные регистры посылаются чтобы модем не орал динамиком во время набора и чтобы не брал трубу при приходе звонка.
Правда модемы у нас подключены по COM порту, а порт инициализируется при загрузке системы через /etc/rc.d/boot.local командами:
/bin/setserial /dev/ttyS0 autoconfig auto_irq skip_test
/bin/stty -F /dev/ttyS0 1:0:8fe:80:0:0:0:0:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0
chmod 664 /dev/ttyS0

Пользователя добавляем в группы
usermod -G dialout,modem USER
« Последнее редактирование: 07 Сентября 2014, 13:57:20 от Nicom »

 

Страница сгенерирована за 0.015 секунд. Запросов: 22.