Know a good article or link that we're missing? Submit it!
*/
*/

View \COMMDEMO.TXT

Serial Communication programming examples in Windows

Submitted By: WEBMASTER
Rating: starstar (Rate It)


Sub Form_Load ()

    Initialize

    Menu_Comm_Connect.Visible = TRUE
    Menu_Comm_Disconnect.Visible = FALSE
   
    offset = 200

    CaptionLeft = offset
    CaptionTop = offset
    CaptionWidth = ScaleWidth - CaptionLeft - offset
    CaptionHeight = TextHeight("qypgjXAQK") * 1.5

    UpdateCaption " Ready", 0

    Left = (Screen.width - width) / 2
    top = Height - ScaleHeight
    Height = top + CaptionTop + CaptionHeight + offset

End Sub


Sub Menu_File_Exit_Click ()

    Unload CommDemo

End Sub

Sub Menu_Comm_Connect_Click ()

    UpdateCaption " Opening Comm Port... " + CommPortName, .5

    CommTBBuffer = PostTBBuffer
    CommRBBuffer = PostRBBuffer
    CommPortName = PostPortName

    CommHandle = OpenComm(CommPortName, CommRBBuffer, CommTBBuffer)

    If CommHandle = -2 Then
        result% = MsgBox("Port already Open!" + Chr$(13) + "Do you want to use it anyway ?", 4 + 16 + 256, "Communication Sampler II")
       
        If result% = 6 Then
            ApiErr% = CloseComm(0)
            CommHandle = OpenComm(CommPortName, CommRBBuffer, CommTBBuffer)
        End If
    End If

    If CommHandle < 0 Then
        UpdateCaption " OpenComm() API Failed! (ERR " + Str$(CommHandle) + ")", .5
    Else
        Menu_Windows.enabled = TRUE
        Menu_Window_Receive_Transmit.Checked = TRUE

        Receive.Show
       
        CommEventMask = PostEventMask
        CommDeviceNum = Val(Mid$(CommPortName, 4, 1))
        ApiErr% = SetCommEventMask(CommHandle, CommEventMask)

        PostState = CommState
        CommState.Id = Chr$(CommHandle)

        ApiErr% = SetCommState(CommState)

        Menu_Comm_Connect.Visible = Menu_Comm_Disconnect.Visible
        Menu_Comm_Disconnect.Visible = Not Menu_Comm_Connect.Visible
        UpdateCaption " Commuications Port Opened...", .5
        DisplayQBOpen CommState, CommPortName, CommRBBuffer, CommTBBuffer, CommReadInterval

        CommReadInterval = PostReadInterval
        Receive.Receive_Timer.interval = CommReadInterval
    End If

End Sub

Sub Menu_Comm_Disconnect_click ()

    UpdateCaption " Closing Communication Port...", 0

    Receive.Receive_Timer.interval = 0

    ApiErr% = CloseComm(CommHandle)
    CommHandle = -1
    CommDeviceNum = -1
   
    Menu_Comm_Disconnect.Visible = Menu_Comm_Connect.Visible
    Menu_Comm_Connect.Visible = Not Menu_Comm_Disconnect.Visible
   
    Menu_Windows.enabled = FALSE
    Unload Receive
   
    UpdateCaption " Ready", 0

End Sub

Sub Form_Unload (Cancel As Integer)

    If CommHandle > -1 Then
        Menu_Comm_Disconnect_click
    End If


    UpdateCaption " Terminating Communication Sampler II...", .5

End Sub

Sub Menu_Comm_Send_CRLF_Click ()
    Menu_Comm_Send_CRLF.Checked = Not Menu_Comm_Send_CRLF.Checked
End Sub

Sub Initialize ()
   
    IndexTrans = 0
    IndexReceive = 0
   
    CommHandle = -1
    CommDeviceNum = -1
   
    ' Default Port Settings

    CommPortName = "COM1:"
    CommState.BaudRate = 9600
    CommState.ByteSize = Chr$(8)
    CommState.Parity = Chr$(0)
    CommState.StopBits = Chr$(0)
   
    ' Default Line Settings

    CommRBBuffer = 2048
    CommTBBuffer = 2048
    CommState.RlsTimeOut = 0
    CommState.CtsTimeOut = 0
    CommState.DsrTimeOut = 0
    CommEventMask = &H3FF
    CommReadInterval = 500

    ' Post-Poned settings

    PostRBBuffer = CommRBBuffer
    PostTBBuffer = CommTBBuffer
    PostEventMask = CommEventMask
    PostState = CommState
    PostReadInterval = CommReadInterval
    PostPortName = CommPortName

End Sub

Sub Menu_Settings_Port_Click ()
   
    UpdateCaption " Loading Dialog...", 0

    PortDlg.Show 1

    If Menu_Comm_Connect.Visible = TRUE Then
        UpdateCaption " Ready ", 0
    Else
        UpdateCaption " Communication Port Open...", 0
    End If

End Sub

Sub Menu_Settings_Event_Click ()
   
    UpdateCaption " Loading Dialog...", 0
   
    EventDlg.Show 1
   
    If Menu_Comm_Connect.Visible = TRUE Then
        UpdateCaption " Ready ", 0
    Else
        UpdateCaption " Communication Port Open...", 0
    End If

End Sub

Sub Menu_Settings_Line_Click ()

    UpdateCaption " Loading Dialog...", 0
   
    LineDlg.Show 1
   
    If Menu_Comm_Connect.Visible = TRUE Then
        UpdateCaption " Ready ", 0
    Else
        UpdateCaption " Communication Port Open...", 0
    End If
   
End Sub

Sub Form_Paint ()
   
    Draw3d CaptionLeft, CaptionTop, CaptionWidth, CaptionHeight, CommDemo
    UpdateCaption CaptionText$, 0

End Sub

Sub Menu_Window_Receive_Transmit_Click ()

    Menu_Window_Receive_Transmit.Checked = Not Menu_Window_Receive_Transmit.Checked
   
    If Menu_Window_Receive_Transmit.Checked = TRUE Then
        Receive.Show
        Receive.Receive_Timer.interval = CommReadInterval
    Else
        Receive.Hide
    End If

End Sub

Sub Menu_File_About_Click ()
   
    UpdateCaption " Loading Dialog...", 0

    AboutDlg.Show 1

    If Menu_Comm_Connect.Visible = TRUE Then
        UpdateCaption " Ready ", 0
    Else
        UpdateCaption " Communication Port Open...", 0
    End If

End Sub

corner
© 1996-2008 CommunityHeaven LLC. All rights reserved. Reproduction in whole or in part, in any form or medium without express written permission is prohibited.
Violators of this policy may be subject to legal action. Please read our Terms Of Use and Privacy Statement for more information.
North American business development: Nicolai Wadstrom. Publisher: Lars Hagelin.
Resource Listings