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

📄 s7200.ctl

📁 一个根据s7200协议写的驱动控件
💻 CTL
字号:
VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.UserControl s7200 
   ClientHeight    =   5280
   ClientLeft      =   0
   ClientTop       =   0
   ClientWidth     =   9015
   ScaleHeight     =   5280
   ScaleWidth      =   9015
   Begin VB.OptionButton Option1 
      Caption         =   "双字"
      Height          =   375
      Index           =   2
      Left            =   6720
      TabIndex        =   14
      Top             =   1200
      Width           =   1695
   End
   Begin VB.OptionButton Option1 
      Caption         =   "字"
      Height          =   375
      Index           =   1
      Left            =   6720
      TabIndex        =   13
      Top             =   720
      Value           =   -1  'True
      Width           =   1695
   End
   Begin VB.OptionButton Option1 
      Caption         =   "字节"
      Height          =   375
      Index           =   0
      Left            =   6720
      TabIndex        =   12
      Top             =   240
      Width           =   1695
   End
   Begin VB.TextBox Text4 
      Height          =   375
      Left            =   3480
      TabIndex        =   9
      Text            =   "Text4"
      Top             =   720
      Width           =   2175
   End
   Begin VB.TextBox Text3 
      Height          =   375
      Left            =   1800
      TabIndex        =   8
      Text            =   "Text3"
      Top             =   2640
      Width           =   7095
   End
   Begin VB.CommandButton Command4 
      Caption         =   "关闭"
      Height          =   615
      Left            =   7200
      TabIndex        =   7
      Top             =   4080
      Width           =   1335
   End
   Begin VB.CommandButton Command3 
      Caption         =   "打开串口"
      Height          =   615
      Left            =   5520
      TabIndex        =   6
      Top             =   4080
      Width           =   1335
   End
   Begin MSCommLib.MSComm MSComm1 
      Left            =   120
      Top             =   1320
      _ExtentX        =   1005
      _ExtentY        =   1005
      _Version        =   393216
      DTREnable       =   -1  'True
   End
   Begin VB.CommandButton Command2 
      Caption         =   "写入"
      Height          =   495
      Left            =   240
      TabIndex        =   5
      Top             =   720
      Width           =   1815
   End
   Begin VB.CommandButton Command1 
      Caption         =   "读取"
      Height          =   495
      Left            =   240
      TabIndex        =   4
      Top             =   120
      Width           =   1815
   End
   Begin VB.TextBox Text2 
      Height          =   375
      Left            =   3480
      TabIndex        =   2
      Text            =   "Text2"
      Top             =   120
      Width           =   2175
   End
   Begin VB.TextBox Text1 
      Height          =   375
      Left            =   1800
      TabIndex        =   0
      Text            =   "Text1"
      Top             =   3480
      Width           =   7095
   End
   Begin VB.Label Label4 
      Caption         =   "发送的数据:"
      Height          =   255
      Left            =   1800
      TabIndex        =   11
      Top             =   2040
      Width           =   1575
   End
   Begin VB.Label Label3 
      AutoSize        =   -1  'True
      Caption         =   "地址:"
      Height          =   180
      Left            =   2760
      TabIndex        =   10
      Top             =   840
      Width           =   540
   End
   Begin VB.Label Label2 
      AutoSize        =   -1  'True
      Caption         =   "显示:"
      Height          =   180
      Left            =   2760
      TabIndex        =   3
      Top             =   240
      Width           =   540
   End
   Begin VB.Label Label1 
      Caption         =   "收到的数据:"
      Height          =   255
      Left            =   1800
      TabIndex        =   1
      Top             =   3120
      Width           =   1575
   End
End
Attribute VB_Name = "s7200"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True
Private bhS7 As CS7
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private st_RevStr As String
Private Sub Command1_Click()
Dim m_data() As Byte
Dim mstr As String
Dim i As Integer
Dim v As Integer
Text1.Text = ""
Text3.Text = ""
For i = 0 To Option1.UBound
    If Option1(i).Value Then
        v = i
        Exit For
    End If
Next
Select Case v
    Case 0
        m_data = bhS7.read_Filed_Data("vb", Val(Text4.Text), 1)
    Case 1
        m_data = bhS7.read_Filed_Data("vw", Val(Text4.Text), 1)
    Case 2
        m_data = bhS7.read_Filed_Data("vd", Val(Text4.Text), 1)
End Select

For i = 0 To UBound(m_data)
    mstr = mstr & Hex(m_data(i)) & " "
Next
Text3.Text = mstr
MSComm1.Output = m_data
Sleep 50
MSComm1.Output = bhS7.GetAckCmd
DoEvents
Sleep 50
RevData
GetValue
End Sub
Private Sub GetValue()
Dim i As Integer
Dim v As Integer
Dim tmp_Str As String
For i = 0 To Option1.UBound
    If Option1(i).Value Then
        v = i
        Exit For
    End If
Next
Select Case v
    Case 0
        tmp_Str = Right(st_RevStr, 6)
        Text2.Text = Val("&h" & Left(tmp_Str, 2))
    Case 1
        tmp_Str = Right(st_RevStr, 8)
        Text2.Text = Val(Val("&h" & Left(tmp_Str, 2)) * 256 + Val("&h" & Mid(tmp_Str, 3, 2)))
    Case 2
        tmp_Str = Right(st_RevStr, 12)
        Text2.Text = Val(Val(Val("&h" & Left(tmp_Str, 2)) * (256 ^ 3) + Val("&h" & Mid(tmp_Str, 3, 2))) * (256 ^ 2) + Val("&h" & Mid(tmp_Str, 5, 2)) * 256 + Val("&h" & Mid(tmp_Str, 7, 2)))
End Select
End Sub
Private Sub RevData()
Dim byt() As Byte
Dim t As Variant
Dim arystr As String
If MSComm1.InBufferCount > 1 Then
t = Timer + 0.5
Do
    byt = MSComm1.Input
    For i = 0 To UBound(byt)
         arystr = arystr & Format(Hex(byt(i)), "00") & " "
         st_RevStr = st_RevStr & Format(Hex(byt(i)), "00")
    Next
    If Timer > t Then
        Exit Do
    End If
Loop Until "&H" & Right(arystr, 2) = &H16
Text1.Text = arystr
End If
DoEvents
End Sub

Private Sub Command2_Click()
Dim m_data() As Byte
Dim i As Integer
Dim mstr As String
Text1.Text = ""
Text3.Text = ""
For i = 0 To Option1.UBound
    If Option1(i).Value Then
        v = i
        Exit For
    End If
Next
Select Case v
    Case 0
        m_data = bhS7.write_filed_Data("vb", CLng(Text2.Text), CLng(Text4.Text))
    Case 1
        m_data = bhS7.write_filed_Data("vw", CLng(Text2.Text), CLng(Text4.Text))
    Case 2
        m_data = bhS7.write_filed_Data("vd", CLng(Text2.Text), CLng(Text4.Text))
End Select

For i = 0 To UBound(m_data)
    mstr = mstr & Hex(m_data(i)) & " "
Next
Text3.Text = mstr
MSComm1.Output = m_data
Sleep 50
MSComm1.Output = bhS7.GetAckCmd
DoEvents
Sleep 50
RevData
End Sub

Private Sub Command3_Click()
initComm
Command3.Enabled = False
End Sub

Private Sub Command4_Click()
closeComm
End Sub

Private Sub UserControl_Initialize()
Set bhS7 = New CS7
End Sub

Private Sub initComm()
MSComm1.CommPort = 1
MSComm1.Settings = "19200,e,8,1"
MSComm1.InputLen = 0
MSComm1.RThreshold = 0
MSComm1.InputMode = comInputModeBinary
MSComm1.PortOpen = True
End Sub

Private Sub closeComm()
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
End Sub

⌨️ 快捷键说明

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