Solved

MsComm Question

Posted on 1998-06-08
3
501 Views
Last Modified: 2008-03-17
I'm trying to use Mscomm control in visual basic and the
problem that i am having is that the modem is not
"letting go" after i place a call.  the code is simple
i use
mscomm1.commport = 2
mscomm1.settings = "9600,n,8,1"
mscomm1.portopen = true
mscomm1.output = "ATDT 5551212" & vbcr
mscomm1.portopen = false

...
This works fine for the first call however when i try to
make another call "even after shutting down the program"
it just runs through the code and does not dial.  
So i go into my terminal program "Telemate" and when i start
that program i can see strings of garbage coming from my modem
until the program initializes it.

So i'm missing a command let me know if anyone knows which one
it is.
0
Comment
Question by:jtjcomp
  • 2
3 Comments
 
LVL 9

Accepted Solution

by:
Dalin earned 50 total points
ID: 1462754
jtjcomp,
You need to send a stop string to the modem when you finishes.
Comm1.OutOut = "ATH0" & Chr(13)
Wait tell the modem dtops, then close the port.
Any questions, let me know
Regards
Dalin


0
 
LVL 1

Author Comment

by:jtjcomp
ID: 1462755
I have tried that and it did not work, however i did not wait to close the port. but since i issued the hang up command shouldn't it have hung up regardless of the port status.
thanks in advance..
0
 
LVL 9

Expert Comment

by:Dalin
ID: 1462756
jtjcomp,
This is some woring code.
You can see if it works for you. You need to pass the number to the routine.
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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Help in WHSCRIPT 9 47
Paint/Redraw window while dragging 16 68
Using "ScreenUpdating" 6 55
MsgBox 4 46
Introduction I needed to skip over some file processing within a For...Next loop in some old production code and wished that VB (classic) had a statement that would drop down to the end of the current iteration, bypassing the statements that were c…
If you have ever used Microsoft Word then you know that it has a good spell checker and it may have occurred to you that the ability to check spelling might be a nice piece of functionality to add to certain applications of yours. Well the code that…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…

911 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

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now