Want to see what people are talking about? See the latest forum posts.
*/
*/

View \LINEDLG.TXT

Serial Communication programming examples in Windows

Submitted By: WEBMASTER
Rating: starstar (Rate It)


Dim WorkRB As Integer
Dim WorkTB As Integer
Dim WorkDCB As CommStateDCB
Dim WorkInterval As Integer

Dim WidthOfText As Integer


Sub Form_Load ()

    Remove_Items_From_SysMenu LineDlg

    Initialize

    CenterDialog LineDlg

End Sub


Sub Initialize ()
   
    WidthOfText = TextWidth("999991")

    SizeControls

    Comm_Receive_Scroll.value = CommRBBuffer
    WorkRB = CommRBBuffer

    Comm_Transmit_Scroll.value = CommTBBuffer
    WorkTB = CommTBBuffer

    If CommDeviceNum > 0 And CommHandle > -1 Then
        Comm_Buffer_Size_Frame.enabled = FALSE
        Comm_Buffer_Size_Label.enabled = FALSE
       
        Comm_Receive_Text.enabled = FALSE
        Comm_Receive_Label.enabled = FALSE
       
        Comm_Transmit_Text.enabled = FALSE
        Comm_Transmit_Label.enabled = FALSE
    End If

   
    Signal_Detect_CD_Scroll.value = CommState.RlsTimeOut
    Signal_Detect_CS_Scroll.value = CommState.CtsTimeOut
    Signal_Detect_DS_Scroll.value = CommState.DsrTimeOut
    WorkDCB = CommState

    Poll_Interval_Scroll.value = CommReadInterval
    WorkInterval = CommReadInterval

End Sub

Sub Reset_Command_Click ()

    Initialize

End Sub

Sub Cancel_Command_Click ()

    Unload LineDlg

End Sub

Sub OK_Command_Click ()
   
    If CommDeviceNum > 0 And CommHandle > -1 Then

        NoChange = TRUE

        If WorkRB <> CommRBBuffer Then NoChange = FALSE
        If WorkTB <> CommTBBuffer Then NoChange = FALSE
        If WorkInterval <> CommReadInterval Then NoChange = FALSE
        If WorkDCB.RlsTimeOut <> CommState.RlsTimeOut Then NoChange = FALSE
        If WorkDCB.CtsTimeOut <> CommState.CtsTimeOut Then NoChange = FALSE
        If WorkDCB.DsrTimeOut <> CommState.DsrTimeOut Then NoChange = FALSE

        If NoChange = TRUE Then
            Unload LineDlg
            Exit Sub
        End If
       
        UpdateCaption " DIALOG: Change Active Settings (Yes), Post-Pone (No), Return to Dialog (Cancel)", 0
       
        Result% = MsgBox("Port Already Active!" + Chr$(13) + "Activate settings Now?", 3 + 16 + 256, "Terminal Sampler II - Port Active")
   
        Select Case Result%
            Case 6
                UpdateCaption " Changing Port Settings LIVE!", 0
               
                CommRBBuffer = WorkRB
                CommTBBuffer = WorkTB
                CommState = WorkDCB
                CommReadInterval = WorkInterval

                PostRBBuffer = WorkRB
                PostTBBuffer = WorkTB
                PostState = WorkDCB
                PostReadInterval = WorkInterval
               
                Receive.Receive_Timer.interval = CommReadInterval

                ApiErr% = SetCommState(WorkDCB)
               
                Unload LineDlg
            Case 7
                UpdateCaption " Settings Post-Poned until next CONNECT", 0
               
                PostRBBuffer = WorkRB
                PostTBBuffer = WorkTB
                PostState = WorkDCB
                PostReadInterval = WorkInterval

                Unload LineDlg
            Case Else
                DisplayQBOpen WorkDCB, CommPortName$, WorkRB, WorkTB, WorkInterval
        End Select

    Else

        CommRBBuffer = WorkRB
        CommTBBuffer = WorkTB
        CommState = WorkDCB
        CommReadInterval = WorkInterval

        PostRBBuffer = WorkRB
        PostTBBuffer = WorkTB
        PostState = WorkDCB
        PostReadInterval = WorkInterval

        Unload LineDlg

    End If

End Sub

Sub Signal_Detect_CD_Scroll_Change ()

    ProcessScrollChange Signal_Detect_CD_Scroll, Signal_Detect_CD_Text

End Sub

Sub Signal_Detect_CS_Scroll_Change ()

    ProcessScrollChange Signal_Detect_CS_Scroll, Signal_Detect_CS_Text

End Sub

Sub Signal_Detect_DS_Scroll_Change ()

    ProcessScrollChange Signal_Detect_DS_Scroll, Signal_Detect_DS_Text

End Sub

Sub Comm_Receive_Scroll_Change ()

    ProcessScrollChange Comm_Receive_Scroll, Comm_Receive_Text

End Sub


Sub Comm_Transmit_Scroll_Change ()

    ProcessScrollChange Comm_Transmit_Scroll, Comm_Transmit_Text

End Sub

Sub Poll_Interval_Scroll_Change ()

    ProcessScrollChange Poll_Interval_Scroll, Poll_Interval_Text

End Sub

Sub Poll_Interval_Text_KeyPress (KeyAscii As Integer)

    ProcessTextKeyPress Poll_Interval_Scroll, Poll_Interval_Text, Comm_Receive_Text, KeyAscii

End Sub


Sub Comm_Receive_Text_KeyPress (KeyAscii As Integer)

    ProcessTextKeyPress Comm_Receive_Scroll, Comm_Receive_Text, Comm_Transmit_Text, KeyAscii

End Sub


Sub Comm_Receive_Text_Change ()

    ProcessTextChange Comm_Receive_Scroll, Comm_Receive_Text

    WorkRB = Comm_Receive_Scroll.value
   
    DisplayQBOpen WorkDCB, CommPortName$, WorkRB, WorkTB, WorkInterval

End Sub


Sub Comm_Receive_Text_LostFocus ()

    ProcessTextLostFocus Comm_Receive_Scroll, Comm_Receive_Text

End Sub


Sub ProcessTextChange (A_Scroll As Control, A_Text As Control)


    WorkVal& = Val(A_Text.Text)

    If WorkVal& > A_Scroll.Max Then
        A_Text.Text = LTrim$(Str$(A_Scroll.Max))
        WorkVal& = A_Scroll.Max
    ElseIf WorkVal& < A_Scroll.Min Then
        Exit Sub
    End If
       
    A% = Len(A_Text.Text)

    A_Scroll.value = WorkVal&

    If A% = 0 Then
        A_Text.SelStart = Len(A_Text.Text)
    End If

End Sub

Sub Comm_Transmit_Text_Change ()

    ProcessTextChange Comm_Transmit_Scroll, Comm_Transmit_Text

    WorkTB = Comm_Transmit_Scroll.value

    DisplayQBOpen WorkDCB, CommPortName$, WorkRB, WorkTB, WorkInterval

End Sub

Sub Poll_Interval_Text_Change ()

    ProcessTextChange Poll_Interval_Scroll, Poll_Interval_Text

    WorkInterval = Poll_Interval_Scroll.value

    DisplayQBOpen WorkDCB, CommPortName$, WorkRB, WorkTB, WorkInterval

End Sub

Sub Signal_Detect_CD_Text_Change ()

    ProcessTextChange Signal_Detect_CD_Scroll, Signal_Detect_CD_Text

    WorkDCB.RlsTimeOut = Signal_Detect_CD_Scroll.value

    DisplayQBOpen WorkDCB, CommPortName$, WorkRB, WorkTB, WorkInterval

End Sub

Sub Signal_Detect_CS_Text_Change ()

    ProcessTextChange Signal_Detect_CS_Scroll, Signal_Detect_CS_Text

    WorkDCB.CtsTimeOut = Signal_Detect_CS_Scroll.value

    DisplayQBOpen WorkDCB, CommPortName$, WorkRB, WorkTB, WorkInterval

End Sub

Sub Signal_Detect_DS_Text_Change ()

    ProcessTextChange Signal_Detect_DS_Scroll, Signal_Detect_DS_Text

    WorkDCB.DsrTimeOut = Signal_Detect_DS_Scroll.value

    DisplayQBOpen WorkDCB, CommPortName$, WorkRB, WorkTB, WorkInterval

End Sub

Sub ProcessTextKeyPress (A_Scroll As Control, A_Text As Control, Next_Text As Control, KeyAscii As Integer)

    Select Case KeyAscii
        Case 8
        Case 13
            KeyAscii = 0
            Next_Text.SetFocus
        Case Asc("0") To Asc("9")
            If A_Text.Sellength = 0 Then
                If KeyAscii = Asc("0") Then
                    If A_Text.SelStart = 0 Then
                        KeyAscii = 0
                    ElseIf Val(A_Text.Text) = 0 Then
                        KeyAscii = 0
                    End If
                ElseIf Len(A_Text.Text) >= Len(Str$(A_Scroll.Max)) - 1 Then
                    KeyAscii = 0
                End If
            End If
        Case Else
            KeyAscii = 0
    End Select

End Sub

Sub ProcessScrollChange (A_Scroll As Control, A_Text As Control)

    Work$ = LTrim$(Str$(A_Scroll.value))

    If Work$ <> LTrim$(A_Text.Text) Then
        A_Text.Text = Work$
    End If

End Sub

Sub Comm_Transmit_Text_KeyPress (KeyAscii As Integer)

    ProcessTextKeyPress Comm_Transmit_Scroll, Comm_Transmit_Text, Signal_Detect_CD_Text, KeyAscii

End Sub

Sub Signal_Detect_CD_Text_KeyPress (KeyAscii As Integer)

    ProcessTextKeyPress Signal_Detect_CD_Scroll, Signal_Detect_CD_Text, Signal_Detect_CS_Text, KeyAscii

End Sub

Sub Signal_Detect_CS_Text_KeyPress (KeyAscii As Integer)

    ProcessTextKeyPress Signal_Detect_CS_Scroll, Signal_Detect_CS_Text, Signal_Detect_DS_Text, KeyAscii

End Sub

Sub Signal_Detect_DS_Text_KeyPress (KeyAscii As Integer)

    ProcessTextKeyPress Signal_Detect_DS_Scroll, Signal_Detect_DS_Text, Poll_Interval_Text, KeyAscii

End Sub

Sub ProcessTextLostFocus (A_Scroll As Control, A_Text As Control)
   
    If Len(A_Text.Text) = 0 Then
        A_Text.Text = LTrim$(Str$(A_Scroll.Min))
        A_Text.SelStart = Len(A_Text.Text)
    ElseIf Val(A_Text.Text) < A_Scroll.Min Then
        A_Text.Text = LTrim$(Str$(A_Scroll.Min))
    End If
   
End Sub

Sub Comm_Transmit_Text_LostFocus ()

    ProcessTextLostFocus Comm_Transmit_Scroll, Comm_Transmit_Text

End Sub

Sub Poll_Interval_Text_LostFocus ()

    ProcessTextLostFocus Poll_Interval_Scroll, Poll_Interval_Text

End Sub

Sub Signal_Detect_CD_Text_LostFocus ()

    ProcessTextLostFocus Signal_Detect_CD_Scroll, Signal_Detect_CD_Text

End Sub

Sub Signal_Detect_CS_Text_LostFocus ()

    ProcessTextLostFocus Signal_Detect_CS_Scroll, Signal_Detect_CS_Text

End Sub

Sub Signal_Detect_DS_Text_LostFocus ()

    ProcessTextLostFocus Signal_Detect_DS_Scroll, Signal_Detect_DS_Text

End Sub

Sub SizeControls ()
    AdjustControl Comm_Receive_Scroll, Comm_Receive_Text, Comm_Receive_Label, Comm_Buffer_Size_Frame
    AdjustControl Comm_Transmit_Scroll, Comm_Transmit_Text, Comm_Transmit_Label, Comm_Buffer_Size_Frame
    AdjustControl Signal_Detect_CD_Scroll, Signal_Detect_CD_Text, Signal_Detect_CD_Label, Signal_Detect_Frame
    AdjustControl Signal_Detect_CS_Scroll, Signal_Detect_CS_Text, Signal_Detect_CS_Label, Signal_Detect_Frame
    AdjustControl Signal_Detect_DS_Scroll, Signal_Detect_DS_Text, Signal_Detect_DS_Label, Signal_Detect_Frame
    AdjustControl Poll_Interval_Scroll, Poll_Interval_Text, Poll_Interval_Label, Poll_Buffer_Frame
End Sub


Sub AdjustControl (A_Scroll As Control, A_Text As Control, A_Label As Control, A_Frame As Control)

    A_Text.Width = WidthOfText
    A_Text.Left = A_Frame.Width - (A_Label.Left + A_Text.Width)
    A_Scroll.height = A_Text.height
    A_Scroll.Width = A_Text.Width * 2
    A_Scroll.Top = A_Text.Top
    A_Scroll.Left = A_Text.Left - A_Scroll.Width - A_Text.Width \ 4

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