• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 522
  • Last Modified:

Dial Modem

Does anyone know how to dial a modem on demand and hang up when the time comes?
0
majestic
Asked:
majestic
1 Solution
 
DalinCommented:
majestic,
Try the following code.
If you have any questions, let me know.
Regards
Dalin



       Private Sub Dial(Number$)
           Dim DialString$, FromModem$
           Dim StopString As String
           Dim Delay As Double

           '--- AT is the Hayes compatible ATTENTION command an is required to send commands to the modem.
           '--- DT means "Dial Tone" - The Dial command, using touch tones as opposed to pulse (DP = Dial Pulse)
           '--- PhoneNumbers$(Index) is the phone number of the person you're dialing
           '--- A semicolon tells the modem to return to command mode after dialing (important)
           '--- A Carriage return, Chr$(13), is required when sending commands to the modem.
           DialString$ = "ATX4&D2DT" + Number$ + ";" + Chr$(13)
           StopString = "ATH0" + Chr$(13)
           '-- Comm port settings
           Comm1.Settings = "300,N,8,1"
           
           '-- Open the comm port
           On Error Resume Next
           Comm1.PortOpen = True
           If Err Then
              MsgBox "COM1: not available. Change the CommPort property to another port."
              Exit Sub
           End If
           
           '-- Flush the input buffer
           Comm1.InBufferCount = 0
           
           '-- Dial the number
           Comm1.Output = DialString$
           
           '-- Wait for "OK" to come back from the modem
           Do
              DoEvents
              '-- If there is data in the buffer, then read it.
              If Comm1.InBufferCount Then
                 FromModem$ = FromModem$ + Comm1.Input
                 '-- Check for "OK"
                 If InStr(FromModem$, "OK") Then
                    '-- Notify the user to pick up the phone
                    FromModem = "" 
                    Beep
                    MsgBox "Please pick up the phone and either press Enter, or click OK"
                    Exit Do
                 ElseIf InStr(FromModem$, "NO DIAL TONE") Or InStr(FromModem$, "NO DIALTONE") Then
                    FromModem = "" 
                    Beep
                    MsgBox "Dialtone not detected.  Please check the telephone connection."
                    CancelFlag = True
                    Exit Do
                 End If
              End If
               
              '-- Was Cancel pressed?
              If CancelFlag Then
                 CancelFlag = False
                 Exit Do
              End If
           Loop

           '-- Disconnect the modem
           Comm1.Output = StopString
           
           '-- Close the port
           Delay = Timer
           While Delay + 1 > Timer
               DoEvents
              '-- If there is data in the buffer, then read it.
              If Comm1.InBufferCount Then
                 FromModem$ = FromModem$ + Comm1.Input
              End If
           Wend
           Comm1.DTREnable = False    'belts and suspenders
           Delay = Timer              'disconnect.  If StopString
           While Delay + 1 > Timer    'worked, this isn't needed.
               DoEvents
           Wend
           Comm1.DTREnable = True
           Comm1.PortOpen = False
       End Sub
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now