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

Dial Modem

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

       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
              '-- 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 = "" 
                    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 = "" 
                    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

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

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

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