Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 532
  • Last Modified:

MsComm Question

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
jtjcomp
Asked:
jtjcomp
  • 2
1 Solution
 
DalinCommented:
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
 
jtjcompAuthor Commented:
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
 
DalinCommented:
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

Technology Partners: 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!

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