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

📄 form1.frm

📁 一个水表抄收系统
💻 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 + -