📄 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 + -