📄 form1.frm
字号:
VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 4845
ClientLeft = 60
ClientTop = 450
ClientWidth = 6705
LinkTopic = "Form1"
ScaleHeight = 4845
ScaleWidth = 6705
StartUpPosition = 3 '窗口缺省
Begin VB.TextBox Text3
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 1215
Left = 480
MultiLine = -1 'True
ScrollBars = 2 'Vertical
TabIndex = 11
Top = 3000
Width = 5895
End
Begin VB.Timer Timer1
Left = 0
Top = 3480
End
Begin VB.CommandButton Command1
Caption = "开始"
Height = 375
Left = 2880
TabIndex = 10
Top = 4320
Width = 855
End
Begin VB.TextBox Text2
Alignment = 2 'Center
Height = 375
Left = 1800
TabIndex = 7
Text = "300"
Top = 4320
Width = 495
End
Begin VB.CommandButton SetCommand
Caption = "设置"
Height = 615
Left = 3360
TabIndex = 6
Top = 240
Width = 1335
End
Begin VB.CommandButton EndCmd
BackColor = &H8000000B&
Caption = "退出"
Height = 375
Left = 5400
TabIndex = 5
Top = 4320
Width = 975
End
Begin VB.CommandButton ClearCmd
Caption = "清除内容"
Height = 615
Left = 4800
TabIndex = 4
Top = 240
Width = 1335
End
Begin VB.CommandButton OpenCmd
Caption = "自动选择串口"
Height = 615
Left = 480
TabIndex = 3
Top = 240
Width = 1335
End
Begin VB.TextBox Text1
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 1335
Left = 480
MultiLine = -1 'True
ScrollBars = 2 'Vertical
TabIndex = 1
Top = 1200
Width = 5895
End
Begin VB.CommandButton ViewCmd
Caption = "读取并显示"
Height = 615
Left = 1920
TabIndex = 0
Top = 240
Width = 1335
End
Begin MSCommLib.MSComm MSComm1
Left = 0
Top = 1680
_ExtentX = 1005
_ExtentY = 1005
_Version = 393216
DTREnable = -1 'True
End
Begin VB.Label Label5
AutoSize = -1 'True
Caption = "异常显示:"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 210
Left = 480
TabIndex = 12
Top = 2760
Width = 1050
End
Begin VB.Label Label4
AutoSize = -1 'True
Caption = "毫秒"
Height = 180
Left = 2400
TabIndex = 9
Top = 4440
Width = 360
End
Begin VB.Label Label3
AutoSize = -1 'True
Caption = "读取间隔时间:"
Height = 180
Left = 480
TabIndex = 8
Top = 4440
Width = 1260
End
Begin VB.Label Label1
AutoSize = -1 'True
Caption = "接收显示:"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 210
Left = 480
TabIndex = 2
Top = 960
Width = 1170
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Option Base 1
Private Sub ClearCmd_Click()
Text1.Text = ""
Text3.Text = ""
Form1.Cls
End Sub
Private Sub Command1_Click()
If Text2.Text = "" Then MsgBox "请输入读取间隔时间。"
If Timer1.Enabled = False And Text2.Text <> "" Then
Timer1.Enabled = True
Command1.Caption = "停止"
Timer1.Interval = Val(Text2.Text)
MsgBox "计时器开启,设置间隔时间成功,当前间隔时间为:" & Val(Text2.Text) & "毫秒"
ElseIf Timer1.Enabled = True And Text2.Text <> "" Then
Command1.Caption = "开始"
Timer1.Enabled = False
MsgBox "计时器已停止!"
End If
End Sub
Private Sub EndCmd_Click()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
End
End Sub
Private Sub Form_Load()
MSComm1.InputMode = comInputModeBinary
MSComm1.RThreshold = 1
MSComm1.Settings = "2400,N,8,1"
Timer1.Enabled = False
End Sub
Private Sub OpenCmd_Click()
Dim PortVal As Integer
PortVal = MSComm1.CommPort
Select Case PortVal
Case 1
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
OpenCmd.Caption = "关闭串口COM1"
MsgBox "COM1串口打开成功!"
ElseIf MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
OpenCmd.Caption = "自动选择串口"
MsgBox "COM1串口已关闭!"
End If
Case 2
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
OpenCmd.Caption = "关闭串口COM2"
MsgBox "COM2串口打开成功!"
ElseIf MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
OpenCmd.Caption = "自动选择串口"
MsgBox "COM2串口已关闭!"
End If
Case 3
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
OpenCmd.Caption = "关闭串口COM3"
MsgBox "COM3串口打开成功!"
ElseIf MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
OpenCmd.Caption = "自动选择串口"
MsgBox "COM3串口已关闭!"
End If
End Select
End Sub
Private Sub SetCommand_Click()
Form2.Show
End Sub
Private Sub Timer1_Timer()
If MSComm1.PortOpen = False Then MsgBox "必须打开串口后才能收取!"
Dim Buf(1) As Byte, WaterInput() As Byte, Sendata() As Byte
Dim Buffer As Variant, Buf_Repeater As Variant
Dim OutRep, Rep_Repeater, WaterNum, OutDat, Water1, Water2, Water3, Water4, Water5, Water6, DelayTime As Integer
Dim Rep1, Rep2, Rep3, Rep4, Rep5, Rep6, Rep7, Rep8, Rep9, Rep10 As Integer
Dim TextStr As String
OnStart:
Dim Send_Repeater() As Byte, Receive_Rep() As Byte
MSComm1.InBufferCount = 0
ReDim Send_Repeater(5)
Send_Repeater(1) = &HA7
Send_Repeater(2) = &HA6
Send_Repeater(3) = &HB6
Send_Repeater(4) = &HB7
Send_Repeater(5) = &HB8
MSComm1.Output = Send_Repeater
On MSComm1.InBufferCount >= 10 GoTo OnStart
Buf_Repeater = MSComm1.Input
Receive_Rep = Receive_Rep
WaterNum = 0
WaterNum = Hex(WaterNum)
Do
WaterNum = WaterNum + 1
MSComm1.InBufferCount = 0
ReDim Sendata(8)
Sendata(1) = &HE0
Sendata(2) = &HE0
Sendata(3) = WaterNum
Sendata(4) = &H0
Sendata(5) = &H0
Sendata(6) = &H0
Sendata(7) = &H0
Sendata(8) = &H1
MSComm1.Output = Sendata
DelayTime = Second(Time)
Do
If Second(Time) - DelayTime > 0.3 Then
TextStr = "读取下一个表超时,请检查!"
Text3.Text = Text3.Text & TextStr & vbNewLine
Exit Sub
End If
DoEvents
Loop Until MSComm1.InBufferCount = 6
Buf(1) = &HFF
Buffer = MSComm1.Input
WaterInput = Buffer
Water1 = WaterInput(0)
Water2 = WaterInput(1)
Water3 = WaterInput(2)
Water4 = WaterInput(3)
Water5 = WaterInput(4)
Water6 = WaterInput(5)
'For i = UBound(WaterInput) To UBound(WaterInput)
'If Len(Hex(WaterInput(i))) = 1 Then
'OutDat = OutDat & "0" & Hex(WaterInput(i))
'Else
'OutDat = OutDat & Hex(WaterInput(i))
'End If
'Next
OutDat = Water1 + Water2 + Water3 + Water4 + Water5 And Buf(1)
If OutDat <> Water6 Then
TextStr = "水表" & Space(1) & WaterNum & Space(1) & "累加和不正确,请检查!"
ElseIf Water5 = &H0 Then
TextStr = "水表" & Space(1) & WaterNum & Space(1) & "读取异常,请检查!"
ElseIf Water5 = &HF0 Then
TextStr = "水表" & Space(1) & WaterNum & Space(1) & "的读数为:" & Water2 & Water3
ElseIf WaterNum = 99 Then
TextStr = "全部读取完毕。共" & WaterNum & "个。"
Exit Do
Else
TextStr = "水表" & Space(1) & WaterNum & Space(1) & "的读数为:" & Water2 & Water3
End If
Text1.Text = Text1.Text & TextStr & vbCrLf
Loop
End Sub
Private Sub ViewCmd_Click()
Timer1_Timer
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -