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

📄 frmmain1.frm

📁 modbusRTU
💻 FRM
📖 第 1 页 / 共 2 页
字号:
         BorderStyle     =   0  'None
         Height          =   285
         Left            =   1080
         TabIndex        =   15
         Text            =   "VW"
         Top             =   525
         Width           =   495
      End
      Begin VB.Label Label6 
         Caption         =   "数据:"
         Height          =   375
         Left            =   240
         TabIndex        =   10
         Top             =   1800
         Width           =   735
      End
      Begin VB.Label Label5 
         Caption         =   "长度:"
         Height          =   375
         Left            =   240
         TabIndex        =   9
         Top             =   1080
         Width           =   735
      End
      Begin VB.Label Label4 
         Caption         =   "起始地址:"
         Height          =   375
         Left            =   240
         TabIndex        =   8
         Top             =   480
         Width           =   975
      End
   End
   Begin VB.Frame Frame1 
      Caption         =   "读寄存器VW"
      Height          =   2295
      Left            =   120
      TabIndex        =   3
      Top             =   1320
      Width           =   4335
      Begin VB.CommandButton CmdReadVW 
         Caption         =   "read"
         Enabled         =   0   'False
         Height          =   375
         Left            =   3000
         TabIndex        =   19
         Top             =   1080
         Width           =   975
      End
      Begin VB.TextBox TextDataRW 
         Height          =   495
         Left            =   1560
         MultiLine       =   -1  'True
         ScrollBars      =   2  'Vertical
         TabIndex        =   14
         Top             =   1680
         Width           =   2415
      End
      Begin VB.ComboBox CobRWNumber 
         Height          =   315
         Left            =   1560
         TabIndex        =   13
         Text            =   "Combo6"
         Top             =   1080
         Width           =   975
      End
      Begin VB.TextBox TextAddRW 
         Height          =   375
         Left            =   1560
         TabIndex        =   12
         Text            =   "0"
         Top             =   555
         Width           =   975
      End
      Begin VB.TextBox Text1 
         Alignment       =   1  'Right Justify
         BorderStyle     =   0  'None
         Height          =   285
         Left            =   1080
         TabIndex        =   11
         Text            =   "VW"
         Top             =   600
         Width           =   495
      End
      Begin VB.Label Label3 
         Caption         =   "返回值:"
         Height          =   375
         Left            =   240
         TabIndex        =   7
         Top             =   1800
         Width           =   975
      End
      Begin VB.Label Label2 
         Caption         =   "长度:"
         Height          =   375
         Left            =   240
         TabIndex        =   6
         Top             =   1080
         Width           =   975
      End
      Begin VB.Label Label1 
         Caption         =   "起始地址:"
         Height          =   375
         Left            =   240
         TabIndex        =   5
         Top             =   600
         Width           =   975
      End
   End
   Begin VB.Frame Frame5 
      Caption         =   "参数设定"
      Height          =   735
      Left            =   120
      TabIndex        =   0
      Top             =   600
      Width           =   8895
      Begin VB.ComboBox CombAddPLC 
         Height          =   315
         Left            =   5760
         TabIndex        =   64
         Top             =   240
         Width           =   975
      End
      Begin VB.CommandButton CmdPort 
         Caption         =   "打开端口"
         Height          =   375
         Left            =   7320
         TabIndex        =   2
         Top             =   240
         Width           =   1215
      End
      Begin VB.ComboBox ComboPort 
         Height          =   315
         Left            =   1440
         TabIndex        =   1
         Top             =   270
         Width           =   975
      End
      Begin VB.Label Label7 
         Caption         =   "从站地址:"
         Height          =   255
         Left            =   4680
         TabIndex        =   63
         Top             =   240
         Width           =   975
      End
      Begin VB.Label Label8 
         Caption         =   "端口选择:"
         Height          =   375
         Left            =   240
         TabIndex        =   21
         Top             =   240
         Width           =   975
      End
   End
   Begin MSCommLib.MSComm MSComm1 
      Left            =   0
      Top             =   0
      _ExtentX        =   1005
      _ExtentY        =   1005
      _Version        =   393216
      DTREnable       =   -1  'True
      ParityReplace   =   64
      RTSEnable       =   -1  'True
      ParitySetting   =   2
      InputMode       =   1
   End
   Begin VB.Menu MnuPort 
      Caption         =   "端口选择"
      Begin VB.Menu MnuCom1 
         Caption         =   "MSCOMM1"
         Checked         =   -1  'True
      End
      Begin VB.Menu MnuCom2 
         Caption         =   "MSCOMM2"
      End
   End
End
Attribute VB_Name = "FrmMain1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'***********************************************************************************************
'读多个保持寄存器值  功能码=03H
'[地址][功能码][寄存器起始地址高8位][寄存器起始地址低8位][寄存器数量高8位][寄存器数量低8位][CRC低字节][CRC高字节]

'写多个保持寄存器值  功能码=10H
'[地址][功能码][寄存器起始地址高8位][寄存器起始地址低8位][寄存器数量高8位][寄存器数量低8位][字节计数][数据高字节][数据低字节]...[数据高字节][数据低字节][CRC低字节][CRC高字节]

'写单个保持寄存器值  功能码=06H
'[地址][功能码][寄存器起始地址高8位][寄存器起始地址低8位][数据高字节][数据低字节][CRC低字节][CRC高字节]
'
'编程 刘胜红 2007-07-13
'************************************************************************************************
Option Explicit
'
Private Sub CmdPort_Click()
 If MSComm1.PortOpen = False Then
 
 MSComm1.CommPort = Me.ComboPort.ListIndex + 1
        MSComm1.Settings = "19200,e,8,1"
        MSComm1.InputMode = comInputModeBinary
        MSComm1.PortOpen = True
   
End If
'    Timer1.Enabled = True
'    Timer2.Enabled = True
'    Timer3.Enabled = True
    
    Me.CmdReadB.Enabled = True
    Me.CmdReadVD.Enabled = True
    Me.CmdReadVW.Enabled = True
    
    Me.CmdWriteB0.Enabled = True
    Me.CmdWriteB1.Enabled = True
    Me.CmdWriteVD.Enabled = True
    Me.CmdWriteVW.Enabled = True

    If Err Then                                       '打开串口失败,则显示出错信息
        MsgBox Error$, 48, "错误信息"
        Exit Sub
    End If
End Sub
Private Sub CmdReadB_Click()

AddPLC = CStr(Me.CombAddPLC.Text)
AddrReadB = Me.TextAddRB.Text
BitNumber = Val(Me.TextBitNumR.Text)
ReadNumberB = Val(Me.CobRBNumber.Text)


Call GetBit(0, AddrReadB, BitNumber, ReadNumberB)
End Sub

Private Sub CmdReadVD_Click()
      
     
     AddPLC = CStr(Me.CombAddPLC.Text)
     ReadNumberD = Val(Me.CobRDNumber.Text)
     AddrReadD = CStr(TextAddRD.Text)
 
     Call ReadVD(0, AddrReadD, ReadNumberD)
End Sub

Private Sub CmdReadVW_Click()
    
     AddPLC = CStr(Me.CombAddPLC.Text)
     ReadNumberW = Val(Me.CobRWNumber.Text)
     AddrReadW = CStr(TextAddRW.Text)
      
     Call ReadVW(0, AddrReadW, ReadNumberW)
   
End Sub

Private Sub CmdWriteB0_Click()
Dim AddrWrite As String
Dim BitNumber As Integer

AddrWrite = Me.TextAddWB.Text
BitNumber = Val(Me.TextBitNumR.Text)

Call SetBitFalse(AddrWrite, BitNumber)
End Sub

Private Sub CmdWriteB1_Click()
Dim AddrWrite As String
Dim BitNumber As Integer

AddrWrite = Me.TextAddWB.Text
BitNumber = Val(Me.TextBitNumR.Text)

Call SetBitTrue(AddrWrite, BitNumber)
End Sub

Private Sub CmdWriteVD_Click()
    Dim AddrWrite As String
     Dim DataWrite As Single

    AddPLC = CStr(Me.CombAddPLC.Text)
   
    AddrWrite = CStr(TextAddWD.Text)
    DataWrite = Val(Me.TextDataD.Text)

    Call WriteVD(AddrWrite, DataWrite)
End Sub

Private Sub CmdWriteVW_Click()
    Dim AddrWrite As String
  
    Dim DataWrite As Integer

    AddPLC = CStr(Me.CombAddPLC.Text)
 
    AddrWrite = CStr(TextAddWW.Text)
    DataWrite = Val(Me.TextDataW.Text)

    Call WriteVW(AddrWrite, DataWrite)
     
End Sub

Private Sub CombAddPLC_Change()
AddPLC = Me.CombAddPLC.ListIndex
End Sub



Private Sub Command1_Click()
Form1.Show
End Sub

Private Sub Command2_Click()

End Sub

Private Sub Form_Load()
Dim i As Integer
    Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
    
    AddPLC = 2
    
    ComboPort.AddItem "1"
    ComboPort.AddItem "2"
    ComboPort.AddItem "3"
    ComboPort.ListIndex = 1

    For i = 0 To 254
        CobRWNumber.AddItem i
        CobRDNumber.AddItem i
        CobRBNumber.AddItem i
        
        CobWWNumber.AddItem i
        CobWDNumber.AddItem i
        CobWBNumber.AddItem i
    
        Me.CombAddPLC.AddItem i
    Next
    Me.CombAddPLC.ListIndex = 2
    
        CobRWNumber.ListIndex = 3
        CobRDNumber.ListIndex = 3
        CobRBNumber.ListIndex = 3
        CobWWNumber.ListIndex = 1
        CobWDNumber.ListIndex = 1
        CobWBNumber.ListIndex = 1
    

    
    FlagVW = False
    FlagVD = False
End Sub

Private Sub Form_Unload(Cancel As Integer)
    If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
End Sub

Private Sub MSComm1_OnComm()
    Dim Inbyte() As Byte
    
    Dim InHEx As String
    Dim i, j As Integer
    Dim recstr As String
    Dim a As Integer
    recstr = ""
    
      ReDim inSafeArray(MSComm1.RThreshold)
    If MSComm1.CommEvent = comEvReceive Then          '收到 RThreshold # of chars.
            Inbyte = MSComm1.Input
          
        For i = 0 To MSComm1.RThreshold - 1
            InHEx = Hex(Val(Inbyte(i)))
             
            inSafeArray(i) = IIf(Len(InHEx) < 2, "0" + InHEx, InHEx)
            recstr = recstr & inSafeArray(i)
            Me.Text6.Text = recstr
        Next i
          a = Len(recstr)
          FlagRec = 1
          
        If FlagVW = True Then
             If a = 2 * (5 + ReadNumberW * 2) Then
               Call ReadVW(1, 0, 0)
             Else
               Call ReadVW(0, AddrReadW, ReadNumberW)
            End If
            
        ElseIf FlagVD = True Then
           If a = 2 * (5 + ReadNumberD * 4) Then
               Call ReadVD(1, 0, 0)
             Else
               Call ReadVD(0, AddrReadD, ReadNumberD)
            End If
          
        
        ElseIf FlagVB = True Then
            If a = 2 * (5 + ReadNumberB * 2) Then
               Call GetBit(1, 0, BitNumber, 0)
            Else
               Call GetBit(0, AddrReadB, BitNumber, ReadNumberB)
            End If
        
        End If

    End If
      

End Sub

Private Sub ComboPort_Click()              '串口选择
    MSComm1.CommPort = ComboPort.ListIndex + 1
End Sub

Private Sub Timer1_Timer()
     AddPLC = CStr(Me.CombAddPLC.Text)
     ReadNumberW = Val(Me.CobRWNumber.Text)
     AddrReadW = CStr(TextAddRW.Text)
    
      Call ReadVW(0, AddrReadW, ReadNumberW)
     
End Sub
Private Sub Timer2_Timer()
     AddPLC = CStr(Me.CombAddPLC.Text)
     AddrReadD = CStr(TextAddRD.Text)
     ReadNumberD = Val(Me.CobRDNumber.Text)
     Call ReadVD(0, AddrReadD, ReadNumberD)
      
End Sub

Private Sub Timer3_Timer()
  AddPLC = CStr(Me.CombAddPLC.Text)
 AddrReadB = Me.TextAddRB.Text
 BitNumber = Val(Me.TextBitNumR.Text)
 ReadNumberB = Val(Me.CobRBNumber.Text)

Call GetBit(0, AddrReadB, BitNumber, ReadNumberB)
End Sub

⌨️ 快捷键说明

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