⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmmodbusplat.frm

📁 一个modbus的测试工具
💻 FRM
📖 第 1 页 / 共 4 页
字号:
VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
Begin VB.Form frmModbusPlat 
   BorderStyle     =   1  'Fixed Single
   Caption         =   "Modbus客户仿真机"
   ClientHeight    =   6195
   ClientLeft      =   45
   ClientTop       =   735
   ClientWidth     =   10695
   BeginProperty Font 
      Name            =   "宋体"
      Size            =   9.75
      Charset         =   134
      Weight          =   400
      Underline       =   0   'False
      Italic          =   0   'False
      Strikethrough   =   0   'False
   EndProperty
   Icon            =   "frmModbusPlat.frx":0000
   LinkTopic       =   "Form1"
   MaxButton       =   0   'False
   ScaleHeight     =   6195
   ScaleWidth      =   10695
   StartUpPosition =   2  'CenterScreen
   Begin VB.Timer tmrTime 
      Interval        =   500
      Left            =   360
      Top             =   4200
   End
   Begin MSCommLib.MSComm MSComm1 
      Left            =   480
      Top             =   4800
      _ExtentX        =   1005
      _ExtentY        =   1005
      _Version        =   393216
      DTREnable       =   -1  'True
   End
   Begin MSComctlLib.StatusBar stbStatus 
      Align           =   2  'Align Bottom
      Height          =   375
      Left            =   0
      TabIndex        =   0
      Top             =   5820
      Width           =   10695
      _ExtentX        =   18865
      _ExtentY        =   661
      _Version        =   393216
      BeginProperty Panels {8E3867A5-8586-11D1-B16A-00C0F0283628} 
         NumPanels       =   4
         BeginProperty Panel1 {8E3867AB-8586-11D1-B16A-00C0F0283628} 
         EndProperty
         BeginProperty Panel2 {8E3867AB-8586-11D1-B16A-00C0F0283628} 
            Object.Width           =   7832
            MinWidth        =   7832
         EndProperty
         BeginProperty Panel3 {8E3867AB-8586-11D1-B16A-00C0F0283628} 
            Object.Width           =   6068
            MinWidth        =   6068
         EndProperty
         BeginProperty Panel4 {8E3867AB-8586-11D1-B16A-00C0F0283628} 
            Alignment       =   1
         EndProperty
      EndProperty
   End
   Begin VB.Menu mnuControl 
      Caption         =   "控制(&C)"
      Begin VB.Menu mnuConnect 
         Caption         =   "联接(&O)"
      End
      Begin VB.Menu mnuDisconnect 
         Caption         =   "离线(&D)"
         Enabled         =   0   'False
      End
      Begin VB.Menu mnuOper1 
         Caption         =   "-"
      End
      Begin VB.Menu mnuExit 
         Caption         =   "退出(&X)"
         Shortcut        =   ^X
      End
   End
   Begin VB.Menu mnuSimulator 
      Caption         =   "仿真工具(&S)"
      Enabled         =   0   'False
      Begin VB.Menu mnuPortSpy 
         Caption         =   "端口监视(&P)..."
      End
      Begin VB.Menu mnuDataSimu 
         Caption         =   "数据仿真器(&E)..."
      End
   End
   Begin VB.Menu mnuOption 
      Caption         =   "选项(&O)"
      Begin VB.Menu mnuHDSet 
         Caption         =   "硬件设置(&H)..."
      End
      Begin VB.Menu mnuPLSet 
         Caption         =   "协议设置(&P)..."
      End
   End
   Begin VB.Menu mnuAbout 
      Caption         =   "关于(&A)"
   End
End
Attribute VB_Name = "frmModbusPlat"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Const cPORTSTATUSINDEX = 1
Const cPORTDESPINDEX = 2
Const cPLDESPINDEX = 3
Const cTIMESTATUSINDEX = 4

Private Sub Form_Load()
    stbStatus.Panels(cPORTSTATUSINDEX).Text = "端口离线"
    stbStatus.Panels(cTIMESTATUSINDEX).Text = Format$(Time, "hh:mm:ss")
End Sub

Private Sub Form_Unload(Cancel As Integer)
    If gbOnline Then
        Cancel = True
    End If
End Sub

Private Sub mnuAbout_Click()
    Load frmCOMTestAbout
    frmCOMTestAbout.Show vbModal, Me
End Sub

Private Sub mnuConnect_Click()
    On Error GoTo ErrConnect
    MSComm1.CommPort = gtHDSet.byCOMPort
    MSComm1.Settings = gsBaudRate(gtHDSet.byBaudRate) & "," & _
        Left$(gsParityMode(gtHDSet.byParityMode), 1) & "," & _
        gsDataBit(gtHDSet.byDataBit) & "," & gsStopBit(gtHDSet.byStopBit)
    MSComm1.Handshaking = gtHDSet.byHandShaking
    If gtPLSet.byFrameType = 0 Then
        MSComm1.InputMode = comInputModeText
    Else
        MSComm1.InputMode = comInputModeBinary
    End If
    MSComm1.EOFEnable = gtHDSet.bEOFEnable
    MSComm1.NullDiscard = gtHDSet.bNullDiscard
    MSComm1.RTSEnable = gtHDSet.bRTSEnable
    MSComm1.DTREnable = gtHDSet.bDTREnable
    MSComm1.InputLen = 0
    MSComm1.PortOpen = True
    stbStatus.Panels(cPORTSTATUSINDEX).Text = "端口在线"
    mnuConnect.Enabled = False
    mnuExit.Enabled = False
    mnuDisconnect.Enabled = True
    mnuSimulator.Enabled = True
    tmrTime.Interval = gtPLSet.iScan
    gbOnline = True
    Exit Sub
ErrConnect:
    stbStatus.Panels(cPORTDESPINDEX).Text = Err.Description
End Sub

Private Sub mnuDataSimu_Click()
    Load frmDataSimu
    frmDataSimu.Show vbModal, Me
End Sub

Private Sub mnuDisconnect_Click()
    MSComm1.PortOpen = False
    stbStatus.Panels(cPORTSTATUSINDEX).Text = "端口离线"
    mnuSimulator.Enabled = False
    mnuDisconnect.Enabled = False
    mnuConnect.Enabled = True
    mnuExit.Enabled = True
    gbOnline = False
End Sub

Private Sub mnuExit_Click()
    Unload Me
End Sub

Private Sub mnuHDSet_Click()
    Load frmHDSet
    frmHDSet.Show vbModal, Me
End Sub

Private Sub mnuPLSet_Click()
    Load frmPLSet
    frmPLSet.Show vbModal, Me
End Sub

Private Sub mnuPortSpy_Click()
    Load frmPortSpy
    frmPortSpy.Show vbModal, Me
End Sub

Private Sub MSComm1_OnComm()
    Select Case MSComm1.CommEvent
        Case comEventBreak
            stbStatus.Panels(cPORTDESPINDEX).Text = "收到 Break"
        Case comEventCDTO
            stbStatus.Panels(cPORTDESPINDEX).Text = "CD (RLSD) 超时"
        Case comEventCTSTO
            stbStatus.Panels(cPORTDESPINDEX).Text = "CTS 超时"
        Case comEventDSRTO
            stbStatus.Panels(cPORTDESPINDEX).Text = "DSR 超时"
        Case comEventFrame
            stbStatus.Panels(cPORTDESPINDEX).Text = "帧错误"
        Case comEventOverrun
            stbStatus.Panels(cPORTDESPINDEX).Text = "数据丢失"
        Case comEventRxOver
            stbStatus.Panels(cPORTDESPINDEX).Text = "接收缓冲区溢出"
        Case comEventRxParity
            stbStatus.Panels(cPORTDESPINDEX).Text = "校验错误"
        Case comEventTxFull
            stbStatus.Panels(cPORTDESPINDEX).Text = "传输缓冲区已满"
        Case comEventDCB
            stbStatus.Panels(cPORTDESPINDEX).Text = "获取 DCB] 时意外错误"
        Case comEvCD
            stbStatus.Panels(cPORTDESPINDEX).Text = "CD 线状态变化"
        Case comEvCTS
            stbStatus.Panels(cPORTDESPINDEX).Text = "CTS 线状态变化"
        Case comEvDSR
            stbStatus.Panels(cPORTDESPINDEX).Text = "DSR 线状态变化"
        Case comEvRing
            stbStatus.Panels(cPORTDESPINDEX).Text = "Ring Indicator 变化"
        Case comEvReceive
            stbStatus.Panels(cPORTDESPINDEX).Text = "收到" & MSComm1.RThreshold & "个字符"
        Case comEvSend
            stbStatus.Panels(cPORTDESPINDEX).Text = "传输缓冲区有" & MSComm1.SThreshold & "个字符"
        Case comEvEOF
            stbStatus.Panels(cPORTDESPINDEX).Text = "输入数据流中发现 EOF 字符"
    End Select
End Sub

Private Sub tmrTime_Timer()
    Dim iInSize As Integer
    Dim vaInBuffer As Variant
    Dim byInBuffer() As Byte
    Dim strInBuffer() As String
    Dim vaOutBuffer As Variant
    Dim byOutBuffer() As Byte
    Dim strOutBuffer() As String
    Dim strTemp As String
    Dim i As Integer, j As Integer, k As Integer
    Dim iAddress As Integer
    Dim iDataCount As Integer
    Dim byByteCount As Byte
    Dim iPkgLen As Integer
    Dim iCrc As Integer
    Dim byCrc(1) As Byte
    Dim byData As Byte
    

⌨️ 快捷键说明

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