frmcomm.frm

来自「Atmel Atmeag128 AVR弹片机 随书原码」· FRM 代码 · 共 173 行

FRM
173
字号
VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.Form frmComm 
   BackColor       =   &H0000FFFF&
   Caption         =   "Comm"
   ClientHeight    =   3195
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   4680
   LinkTopic       =   "Form1"
   ScaleHeight     =   3195
   ScaleWidth      =   4680
   StartUpPosition =   3  'Windows Default
   Visible         =   0   'False
   Begin VB.Timer tmrWatchdog 
      Enabled         =   0   'False
      Interval        =   300
      Left            =   480
      Top             =   1440
   End
   Begin MSCommLib.MSComm MSComm1 
      Left            =   480
      Top             =   360
      _ExtentX        =   1005
      _ExtentY        =   1005
      _Version        =   393216
      DTREnable       =   0   'False
      RThreshold      =   1
   End
End
Attribute VB_Name = "frmComm"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Public Function fncInitializeComPort _
    (BitRate As Long, _
    PortNumber As Integer) _
    As Boolean

    'xDebug.Print "FncInitComPort"
    Dim ComSettings$
    If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
    
    MSComm1.CommPort = PortNumber
    ComSettings = Str(BitRate) & ",N,8,1"
    MSComm1.Settings = ComSettings
    MSComm1.InputLen = 1
    MSComm1.InBufferSize = 100
    MSComm1.RThreshold = 1
    MSComm1.InputMode = comInputModeText
    MSComm1.ParityReplace = ""
    MSComm1.NullDiscard = False
    MSComm1.EOFEnable = False
    MSComm1.DTREnable = False
    MSComm1.OutBufferSize = 1024
    MSComm1.SThreshold = 1
    MSComm1.Handshaking = comNone
    MSComm1.RTSEnable = False
    'Open the port.
    If MSComm1.PortOpen = False Then
        MSComm1.PortOpen = True
    Else
        MSComm1.PortOpen = False
        MSComm1.PortOpen = True
    End If
    'Return success or failure
    fncInitializeComPort = MSComm1.PortOpen

End Function

Public Sub MSComm1_OnComm()
    'Handles all Comm events
    Dim ComEventMessage As String
    Select Case MSComm1.CommEvent
        ' Events
    '    Case comEvCD
    '        ComEventMessage = "Change in the CD line."
    '    Case comEvCTS
    '        ComEventMessage = "Change in the CTS line."
    '    Case comEvDSR
    '        ComEventMessage = "Change in the DSR line."
    '    Case comEvRing
    '        ComEventMessage = "Change in the RI line."
        Case comEvReceive
    '        ComEventMessage = "Receive buffer has RThreshold number of characters."
             CharReceived (MSComm1.Input)
        Case comEvSend
            'xDebug.Print "Xmt buff empty"
            'ComEventMessage = "Transmit buffer has SThreshold number of characters."
        Case comEvEOF
    '        ComEventMessage = "EOF character (1Ah) received."
        'Errors
    '    Case comEventBreak
    '        ComEventMessage = "A Break was received."
    '    Case comEventCDTO
    '        ComEventMessage = "CD (RLSD) Timeout."
    '    Case comEventCTSTO
    '        ComEventMessage = "CTS Timeout."
    '    Case comEventDSRTO
    '       ComEventMessage = "DSR Timeout."
    '    Case comEventFrame
    '        ComEventMessage = "Framing Error"
    '    Case comEventOverrun
    '        ComEventMessage = "Overrun; data Lost."
    '    Case comEventRxOver
    '        ComEventMessage = "Receive buffer overflow."
    '    Case comEventRxParity
    '        ComEventMessage = "Parity Error."
    '    Case comEventTxFull
    '        ComEventMessage = "Transmit buffer full."
    '    Case comEventDCB
    '        ComEventMessage = "Unexpected error retrieving DCB."
    End Select
End Sub

'2 Byte Header Receive Routine - 3 byte header routine is called from here
Public Sub CharReceived(RecdChar As String)
    'xDebug.Print "Char: ", MSComm1.RThreshold, MSComm1.DTREnable
    'xDebug.Print RecdChar
    If RecdChar = Chr(10) Then
        Call CharMessageDone
    Else
        PP = PP + 1
        RcvBuff = RcvBuff & RecdChar
    End If
    
End Sub

Private Sub CharMessageDone()
    Dim j As Integer
    frmScroll.Scroll_Rcvd (RcvBuff)
    
    Select Case Mode
        Case "Volt1"
            If left(RcvBuff, 1) = "T" Then
                Call frmScroll.Calc(RcvBuff)
                Call frmScroll.UpdateChartArray
                Call frmChartGiga.PEgraph
                Call frmScroll.AlarmCalc
                Call frmScroll.DisplayMinMax
                Call frmScroll.ReformatBuff(RcvBuff)
            End If
        Case "Logic"
            If left(RcvBuff, 1) = "L" Then
                Call frmScroll.CalcLogic(RcvBuff)
                LogicPtr = LogicPtr + 1
                Debug.Print "L", LogicPtr
            End If
            If left(RcvBuff, 1) = "l" Then
                Debug.Print "Logic Done"
                Call frmPElogic.PELogicGraph(LogicPtr)
                LogicPtr = 0
                Mode = "Volt1"
            End If
    End Select
    
    RcvBuff = ""
    PP = 0
End Sub

Private Sub tmrWatchdog_Timer()
    'xDebug.Print "Watchdog - Threshold", frmComm.MSComm1.RThreshold, MSComm1.InputLen, mRFEnabled
    Call ResetPointers
End Sub

Private Sub ResetPointers()
    Dim Dummy As String
End Sub

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?