LINUX.ORG.RU

Позвонить модемом на телефон через 9ку


0

0

Как можно осуществить сабж. Вроде простая задача, но сколько ни гуглил - так и не нашел толкового мана как вообще модемом позвонить на номер. И тем более позвонить через 9ку. :((( Подскажите как осуществить сие деяние из командной строки. Суть такая. Модем подключен и настроен как автоответчик. Есть скриптик, выполняющий действия, после поступления звонка. Нужно из этого скриптика позвонить на номер телефона.

Заранее благодарю.


можно вписать в скрипт сточку на sed'e которая меняет номер телефона для звонка в .wvdialrc (если для дозвона используется wvdial).

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

echo "ATZ" > /dev/modem

pause 1

echo "ATDT 9,,,123456" > /dev/modem

********** Цитата ********

Изучая правила набора номера, можно отметь ещё несколько важных моментов. Кому то нечасто, а кому то постоянно приходится звонить либо по междугородней связи, либо через офисную ATC. Здесь имеется один нюанс и его следует учитывать. Дело в том, что сначала набирается цифра коммутатора, например 8 для междугородней связи, а затем после появления длинного гудка можно продолжать основной набор. В модеме для автоматизации такого процесса предусмотрена команда W. Именно благодаря ей модем прекращает набор номера, и не производит его до тех пор, пока не услышит длинный гудок. Например

ATDP8W7654321

заставит модем сначала набрать 8, а затем после появления длинного сигнала продолжить набор цифр 7654321. Аналогично эта команда используется и на офисных ATC, и кода вам говорят “звоните в город через двойку”, для модема потребуется записать

ATDP2W7654321

Задержка с помощью W команды вещь необходимая даже если не пользоваться именно терминальными программами. При установке “Сетевого соединения ” в Windows придётся записывать номер именно по тем правилам, которые мы только что рассмотрели.

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

Давайте разберёмся, случайно ли это. Запятая в команде набора играет немаловажную роль. Она фактически обозначает выдержку времени, в течении которой модем вообще не реагирует ни на какие команды. Зачем это нужно, спросите вы? Если спрашиваете, то значит просто не сталкивались с этим явлением, а оно возникает и достаточно часто возникает, когда нужно “обмануть” модем.

Мы только что рассмотрели действие команды W в наборе. А теперь давайте представим себе ситуацию. Набрали 8 и ждём гудка. Но вот беда тональность гудка оказалась такая, что входные фильтры модема её не определяют и не опознают. В результате после появления такого гудка модем просто откажется набирать номер. А нам то нужно его набрать. Что делать? Зовём запятые на помощь! Наша AT команда набора превратится в

ATDP8,,,,,7654321

Количество запятых подбираем “по вкусу”. Каждая из них заставляет модем прекратить выполнение любых команд в течении определённого промежутка времени. Где и кем определённого. А есть такой регистр у модема, S8 называется. В нём и записана эта выдержка, и обычно она составляет S8=2, то есть две секунды. Что получилось? А получилось что модем снял трубку, набрал 8 и согласно нашему примеру подождал 10 секунд. За это время скорее всего появился длинный гудок приглашающий набирать номер дальше, модем и стал это делать. Правда при такой команде ему абсолютно всё равно есть на самом деле это гудок или нет. Он же машина! Вот потому то и подбирают выдержку ”по вкусу”. И именно потому команда W гибче, ибо заставляет модем слушать линию, но сигналы в линии должны соответствовать стандартам.

Второй пример. АТС через которую работает модем оказалось ”тугоумной”. Проблемы в этом случае нам обеспечены, при пульсовом наборе номера. Мы набрали цифру и начинаем набирать вторую. А до АТС как “до жирафа” не дошло, какую мы цифру набрали, мы уже третью набираем, а она ещё ко второй не приступила. Если бы мы сами звонили по телефону, то набирали бы медленнее, или делали паузы между набранными номерами. А как заставить модем делать тоже самое? Можно изменить скорость набора номера, и об этом мы ещё поговорим, а можно просто дать команду:

ATDP7,6,5,4,3,2,1

Гарантировано, что модем будет после каждой цифры делать паузу в две секунды. В борьбе с тугоумными АТС этот трюк вполне может пригодиться. Ну и напоследок, ещё один пример. Вы позвонили абоненту, но его АТС оказалась тугоумной. По идее если номер абонента занят, то его АТС должна послать короткие гудки, ан нет она выдала их уже после того, как “определители” вашего модема отработали и этих самых коротких гудков не обнаружили. Модем посчитал – всё нормально и можно переходить к сеансу приёма передачи данных. Запоздалые гудки для него не будут сюрпризом, он их просто не услышит, но и соединиться с такими гудками равносильно абсолютно пустому сеансу связи. Выход из положения прост:

ATDP7654321,,

В этом случае модем наберёт номер, но линию слушать не будет 4 секунды, а по их истечении нарвётся на короткие гудки поданные тугоумной АТС. Это старый приём, но он спас не одного пользователя натолкнувшегося на “неадекватное” поведение АТС

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

Обидно :(( В minicome все так замечательно работает...

hayova
() автор топика
Ответ на: комментарий от Lumi

Да с 9кой я понял как разобраться :))) ТОлько вот как же все-таки из командной строки (ну или скрипта позвонить) =)

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

>здесь похожая темка, но там тоже так ничего и не придумали :((

В конце идет разговор о сигналах на СОМ-порте. Надо посмотреть как прописана обработка этих сигналов в minicom и тоже сделать с помощью setserial. В разделе документация было описание на эту тему.

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

> посмотри вот это...

Посмотрел... написано тоже самое практически =) В одном окне cat /dev/ttyS0, в другом - cat > /dev/ttyS0... Только у меня при этом ничего не происходит :(((

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

>Т.е. на одном терминале cat /dev/ttyS0, а на другом minicom?

Совсем не т.е. Почитай как работают устройства на СОМ-портах и что делает DTR. Готового решения тебе не напишут (скорее всего), разобраться придется самому.

У меня был похожий случай, я решил его с помощью паяльника, но к СОМ-порту я подключал не модем, было совсем другое устройство.

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

>Только у меня при этом ничего не происходит :(((
может ты не внимательно читал?

>MAX232 контакт 14 к CTS (DB-9 контакт 8)
>MAX232 контакт 7 к RXD (DB-9 контакт 2)
>MAX232 контакт 13 к TXD (DB-9 контакт 3)
-------------------------------------------------------------------
>Вам нужно также присоединить DTR, DSR и CD (DB-9 контакты 4, 6 и 1)
>Это хорошо видно на схеме выше.
-------------------------------------------------------------------

-------------------------------------------------------------------
>[общение с ЖК-дисплеем через последовательный порт] Чтобы использовать >последовательный порт, Вам нужно инициализировать его. Архив исходных 
-------------------------------------------------------------------
>кодов linuxlcdpanel-0.7.tar.gz содержит программу ttydevinit, которая >производит инициализацию. Пусть Вы присоединили панель к порту >COM2(ttyS1), тогда Вам нужно запустить команду:

>./ttydevinit /dev/ttyS1

то что нужно я выделил...

Зато я писал небольшую прогу на C которая читает/пишет в RS232.
Дока: http://www.opennet.ru/docs/RUS/serial_guide/

ЗЫ сам не пробовал, не знаю.

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

Всем спасибо =) Заставил работать vm =)

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