Как определить момент поднятия трубки?
От: Gazelle Россия  
Дата: 06.04.04 16:52
Оценка:
Необходимо сделать звонок, когда на том конце провода возьмут трубку выполнить какие-то действия, положить трубку.
Использую RAS API. При вызове RasDial в синхронном режиме функция управление программе возвращается, когда на том конце провода уже взяли и положили трубку.
Вызываю RasDial в асинхронном режиме. Callback-функция получает уведомления о событиях RASCS_OpenPort, RASCS_PortOpened и RASCS_ConnectDevice. RASCS_DeviceConnected не приходит.
Как побороть проблему?

RASDIALPARAMS RasDialParams;    
hRasConn = NULL;
memset(&RasDialParams, 0, sizeof(RasDialParams));
RasDialParams.dwSize = sizeof(RASDIALPARAMS);
lstrcpy(RasDialParams.szPhoneNumber, "240115");
        
DWORD res = RasDial(NULL, NULL, &RasDialParams, 0, NULL /*DialCallback*/, &hRasConn);
Re: Как определить момент поднятия трубки?
От: Gazelle Россия  
Дата: 09.04.04 08:21
Оценка:
Здравствуйте, Gazelle, Вы писали:

G>Необходимо сделать звонок, когда на том конце провода возьмут трубку выполнить какие-то действия, положить трубку.

G>Использую RAS API. При вызове RasDial в синхронном режиме функция управление программе возвращается, когда на том конце провода уже взяли и положили трубку.
G>Вызываю RasDial в асинхронном режиме. Callback-функция получает уведомления о событиях RASCS_OpenPort, RASCS_PortOpened и RASCS_ConnectDevice. RASCS_DeviceConnected не приходит.
G>Как побороть проблему?

G>
G>RASDIALPARAMS RasDialParams;    
G>hRasConn = NULL;
G>memset(&RasDialParams, 0, sizeof(RasDialParams));
G>RasDialParams.dwSize = sizeof(RASDIALPARAMS);
G>lstrcpy(RasDialParams.szPhoneNumber, "240115");
        
G>DWORD res = RasDial(NULL, NULL, &RasDialParams, 0, NULL /*DialCallback*/, &hRasConn);
G>


Неужели никто не знает?
Re[2]: Как определить момент поднятия трубки?
От: .a.r.t.  
Дата: 13.04.04 09:08
Оценка:
"Gazelle" <16834@news.rsdn.ru> сообщил/сообщила в новостях следующее: news:600620@news.rsdn.ru...
> Неужели никто не знает?

IMHO, RAS-функции ожидают, что им ответит сервер удаленного доступа. Поэтому будут возвращать что-либо только при удачном коннекте (т.е. уже произошло соединение и аутентификация) или при неудачном. Сдается здесь RAS не подходит
Posted via RSDN NNTP Server 1.8 beta
Re: Как определить момент поднятия трубки?
От: Vic Chechenin  
Дата: 28.07.05 07:15
Оценка:
Здравствуйте, Gazelle, Вы писали:

G>Необходимо сделать звонок, когда на том конце провода возьмут трубку выполнить какие-то действия, положить трубку.

G>Использую RAS API. При вызове RasDial в синхронном режиме функция управление программе возвращается, когда на том конце провода уже взяли и положили трубку.
G>Вызываю RasDial в асинхронном режиме. Callback-функция получает уведомления о событиях RASCS_OpenPort, RASCS_PortOpened и RASCS_ConnectDevice. RASCS_DeviceConnected не приходит.
G>Как побороть проблему?

G>
G>RASDIALPARAMS RasDialParams;    
G>hRasConn = NULL;
G>memset(&RasDialParams, 0, sizeof(RasDialParams));
G>RasDialParams.dwSize = sizeof(RASDIALPARAMS);
G>lstrcpy(RasDialParams.szPhoneNumber, "240115");
        
G>DWORD res = RasDial(NULL, NULL, &RasDialParams, 0, NULL /*DialCallback*/, &hRasConn);
G>


Здесь нужна TAPI
Re[2]: Как определить момент поднятия трубки?
От: Sergeant Украина www.photomirror.com.ua
Дата: 28.07.05 07:26
Оценка:
Здравствуйте, Vic Chechenin, Вы писали:

VC>Здесь нужна TAPI


А как Вы с помощью ТАПИ определите, что на дальнем конце сняли трубу?
Курить я буду, но пить не брошу.
Re[3]: Как определить момент поднятия трубки?
От: Сбежал из... Россия  
Дата: 28.07.05 08:19
Оценка:
Здравствуйте, Sergeant, Вы писали:

S>Здравствуйте, Vic Chechenin, Вы писали:


VC>>Здесь нужна TAPI


S>А как Вы с помощью ТАПИ определите, что на дальнем конце сняли трубу?

lineDial когда вернет управление то либо сняли трубку, либо произошла ошибка ( типа занято или номер не существует)
Re[4]: Как определить момент поднятия трубки?
От: Sergeant Украина www.photomirror.com.ua
Дата: 01.08.05 06:53
Оценка:
Здравствуйте, Сбежал из..., Вы писали:

S>>А как Вы с помощью ТАПИ определите, что на дальнем конце сняли трубу?

СИ>lineDial когда вернет управление то либо сняли трубку, либо произошла ошибка ( типа занято или номер не существует)
Нет, она вернет управление, когда дозвонились. Трубка при этом может быть не снята.
Курить я буду, но пить не брошу.
Re[3]: Как определить момент поднятия трубки?
От: Аноним  
Дата: 01.08.05 09:34
Оценка:
Здравствуйте, Sergeant, Вы писали:

VC>>Здесь нужна TAPI


S>А как Вы с помощью ТАПИ определите, что на дальнем конце сняли трубу?


Предполагаю, что после набора номера нужно переходить в режим записи звука и ждать окончания длинных гудков или появления коротких.
Re[4]: Как определить момент поднятия трубки?
От: Sergeant Украина www.photomirror.com.ua
Дата: 01.08.05 14:57
Оценка:
Здравствуйте, Аноним, Вы писали:

S>>А как Вы с помощью ТАПИ определите, что на дальнем конце сняли трубу?


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


Вот-вот А тут начинается самое интересное
Курить я буду, но пить не брошу.
Re[5]: Как определить момент поднятия трубки?
От: Аноним  
Дата: 01.08.05 20:35
Оценка:
Здравствуйте, Sergeant, Вы писали:

S>Здравствуйте, Аноним, Вы писали:


S>>>А как Вы с помощью ТАПИ определите, что на дальнем конце сняли трубу?


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


S>Вот-вот А тут начинается самое интересное


Корреляция думаю поможет
Применяется в АОНах
Re[6]: Как определить момент поднятия трубки?
От: Sergeant Украина www.photomirror.com.ua
Дата: 02.08.05 06:26
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Корреляция думаю поможет

А>Применяется в АОНах

Угу. Есть в Сети где-то библиотечки специально для распознавания таких вещей в телефонных линиях. Но я не стал в свое время с ними разбираться, потому как было не критично.
Курить я буду, но пить не брошу.
Re[3]: Как определить момент поднятия трубки?
От: Andrewsha Россия http://andrewsha.com
Дата: 02.08.05 09:12
Оценка:
Здравствуйте, Sergeant, Вы писали:

S>Здравствуйте, Vic Chechenin, Вы писали:


VC>>Здесь нужна TAPI


S>А как Вы с помощью ТАПИ определите, что на дальнем конце сняли трубу?

произойдет событие с сообщением LINE_CALLSTATE и dwParam1 is LINECALLSTATE_CONNECTED
http://msdn.microsoft.com/library/en-us/tapi/tapi2/line_callstate.asp
Re[4]: Как определить момент поднятия трубки?
От: Sergeant Украина www.photomirror.com.ua
Дата: 02.08.05 10:31
Оценка:
Здравствуйте, Andrewsha, Вы писали:

S>>А как Вы с помощью ТАПИ определите, что на дальнем конце сняли трубу?

A>произойдет событие с сообщением LINE_CALLSTATE и dwParam1 is LINECALLSTATE_CONNECTED
A>http://msdn.microsoft.com/library/en-us/tapi/tapi2/line_callstate.asp

Ес. Только придет оно, как только функция дозвона наберет номер. Снята ли при этом труба на том конце или в линии до сих пор длинные гудки — нам не известно.
Курить я буду, но пить не брошу.
Re[5]: Как определить момент поднятия трубки?
От: Andrewsha Россия http://andrewsha.com
Дата: 02.08.05 10:44
Оценка:
Здравствуйте, Sergeant, Вы писали:

S>Здравствуйте, Andrewsha, Вы писали:


S>>>А как Вы с помощью ТАПИ определите, что на дальнем конце сняли трубу?

A>>произойдет событие с сообщением LINE_CALLSTATE и dwParam1 is LINECALLSTATE_CONNECTED
A>>http://msdn.microsoft.com/library/en-us/tapi/tapi2/line_callstate.asp

S>Ес. Только придет оно, как только функция дозвона наберет номер. Снята ли при этом труба на том конце или в линии до сих пор длинные гудки — нам не известно.


Думаю, прежде всего зависит от драйвера, но когда гудки получаешь сообщение dwParam1=LINECALLSTATE_RINGBACK, а после снятия трубки на том конце dwParam1=LINECALLSTATE_CONNECTED. По крайней мере с драйвером для АТС Панасоника так и происходило.
http://msdn.microsoft.com/library/en-us/tapi/tapi2/linecallstate__constants.asp
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.