Solved

Dial Modem

Posted on 1998-06-09
1
499 Views
Last Modified: 2012-05-07
Does anyone know how to dial a modem on demand and hang up when the time comes?
0
Comment
Question by:majestic
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
1 Comment
 
LVL 9

Accepted Solution

by:
Dalin earned 100 total points
ID: 1462967
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

Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Most everyone who has done any programming in VB6 knows that you can do something in code like Debug.Print MyVar and that when the program runs from the IDE, the value of MyVar will be displayed in the Immediate Window. Less well known is Debug.Asse…
You can of course define an array to hold data that is of a particular type like an array of Strings to hold customer names or an array of Doubles to hold customer sales, but what do you do if you want to coordinate that data? This article describes…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…

749 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question