Помогите с контролом для набора номера

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Bulat
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 17.12.2004 (Пт) 12:13

Помогите с контролом для набора номера

Сообщение Bulat » 22.12.2004 (Ср) 10:50

Нужен контрол для набора номера. Знаю, что есть MSComm. Смотрел примеры, но так и не понял, как организовать автодозвон. Меня интересует следующий цикл:
1. снять трубку
2. проверка, есть или нет гудок
3. если гудка нет - сообщение и конец цикла, если есть - набор номера
4. если номер занят - отбой и далее снова п.1 - цикл автодозвона
5. если номер не занят -разговор- как отследить окончание разговора
:?: Есть ли код, организующий такую последовательность действий?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.12.2004 (Ср) 11:02

Этот "код" делается командами AT.
Список оных см. в инструкции к модему.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Bulat
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 17.12.2004 (Пт) 12:13

Сообщение Bulat » 22.12.2004 (Ср) 15:01

О наличии команд AT знаю давно. Не уверен, что с помощью этих команд можно проверить, например, наличие коротких гудков в линии.
Неужели трудно привести кусок кода для цикла автодозвона.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 22.12.2004 (Ср) 15:05

Кусок кода привести трудно, потому что надо знать эти команды.
А алгоритм очень простой - посылаешь команды и ловишь ответ. И так в цикле.
Lasciate ogni speranza, voi ch'entrate.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 22.12.2004 (Ср) 15:06

P.S. Короткие гудки - это ответ "BUSY" от модема. "NO CARRIER" - нет сигнала. И т.п.
Можешь использовать TAPI, оно многое упростит.
Lasciate ogni speranza, voi ch'entrate.

Bulat
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 17.12.2004 (Пт) 12:13

Сообщение Bulat » 22.12.2004 (Ср) 15:33

Т.е. ответы линии ты знаешь, а команды нет?!

Кто знает команды или знает способ их узнать?

Для alibek и GSerg:
Пока я ищу команды приведите пожалуйста кусок кода автодозвона вместо команд подставляя AT<набор номера>, AT<запрос состояния линии> и т.д.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 22.12.2004 (Ср) 15:56

ATDP1234567 - это пульсовый набор номера
ATZ - установка заводских установок модема

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 22.12.2004 (Ср) 16:00

запроса состояния линии в стандартных AT командах нет, см. специфику своего модема.
вообще-то, если ты юзать будешь все это через MSCOMM , то эти события ловяться в эвенте контрола (см. пример):

Код: Выделить всё
Private Sub MSComm1_OnComm()
Dim InBuff As String

   
   Select Case MSComm1.CommEvent
   ' Handle each event or error by placing
   ' code below each case statement

   ' Errors
      Case comEventBreak   ' A Break was received.
         ErrMsg = "Break"
      ' These next three timeout values are no longer detected in Win32
      Case comEventCDTO    ' CD (RLSD) Timeout.
      Case comEventCTSTO   ' CTS Timeout.
      Case comEventDSRTO   ' DSR Timeout.
      Case comEventFrame   ' Framing Error
         ErrMsg = "Framing"
      Case comEventOverrun ' Data Lost.
         ErrMsg = "Overrun"
      Case comEventRxOver  ' Receive buffer overflow.
         ErrMsg = "OverFlow"
      Case comEventRxParity   ' Parity Error.
         ErrMsg = "Parity"
      Case comEventTxFull  ' Transmit buffer full.
         ErrMsg = "TX Full"
      Case comEventDCB  ' Unexpected error retrieving DCB]
         ErrMsg = "DBC"
         
   ' Events
      Case comEvCD   ' Change in the CD line.
         If MSComm1.CDHolding = True Then
            StatusBar1.Panels("Status").Text = "Connected"
            shpCD.FillColor = vbGreen
            cmdSend.Visible = True
            Connected = True
         Else
            StatusBar1.Panels("Status").Text = "Disconnected"
            shpCD.FillColor = vbRed
            cmdSend.Visible = False
            Connected = False
         End If
         
      Case comEvCTS  ' Change in the CTS line.
         If MSComm1.CTSHolding = True Then
            shpCTS.FillColor = vbGreen
         Else
            shpCTS.FillColor = vbRed
         End If
         
      Case comEvDSR  ' Change in the DSR line.
         ErrMsg = ">>DSR Signal"
         
      Case comEvRing ' Change in the Ring Indicator.
         
         ErrMsg = ">>RING"
         
      Case comEvReceive ' Received RThreshold # of chars.
         shpReceive.FillColor = vbGreen
'         On Error Resume Next
         InBuff = MSComm1.Input
'         Debug.Print Err.Number & ":" & Err.Description
         Call ScanCom(InBuff)
         shpReceive.FillColor = vbRed
         
      Case comEvSend ' There are SThreshold number of
                     ' characters in the transmit buffer.
         shpSend.FillColor = vbGreen
         Do While MSComm1.OutBufferCount > 0
            DoEvents
         Loop
         shpSend.FillColor = vbRed
         
      Case comEvEOF ' An EOF character was found in
                    ' the input stream
           
            SMS.SendPrompt = False
           
    End Select

End Sub


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

    TopList