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

📄 form11.frm

📁 本设计要求使用微机与可编程控制器通过串行通信接口进行连接
💻 FRM
字号:
VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Object = "{5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0"; "MSFLXGRD.OCX"
Begin VB.Form Form11 
   BackColor       =   &H00FFC0C0&
   Caption         =   "读T/C的状态"
   ClientHeight    =   5565
   ClientLeft      =   60
   ClientTop       =   435
   ClientWidth     =   9945
   LinkTopic       =   "Form11"
   ScaleHeight     =   5565
   ScaleWidth      =   9945
   StartUpPosition =   2  '屏幕中心
   Begin VB.Timer Timer1 
      Interval        =   2000
      Left            =   6360
      Top             =   120
   End
   Begin MSCommLib.MSComm MSComm1 
      Left            =   3840
      Top             =   0
      _ExtentX        =   1005
      _ExtentY        =   1005
      _Version        =   393216
      DTREnable       =   -1  'True
   End
   Begin VB.Frame Frame1 
      BackColor       =   &H00FFC0FF&
      Caption         =   "读T/C的状态"
      BeginProperty Font 
         Name            =   "楷体_GB2312"
         Size            =   12
         Charset         =   134
         Weight          =   700
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H000000FF&
      Height          =   4575
      Left            =   360
      TabIndex        =   0
      Top             =   600
      Width           =   8775
      Begin VB.CommandButton Cmd2 
         BackColor       =   &H00C0C0FF&
         Caption         =   "自动读T/C的状态"
         Height          =   495
         Left            =   6000
         Style           =   1  'Graphical
         TabIndex        =   10
         Top             =   1200
         Width           =   1935
      End
      Begin VB.CommandButton Cmd1 
         BackColor       =   &H00C0C0FF&
         Caption         =   "读T/C的状态"
         Height          =   375
         Left            =   6000
         Style           =   1  'Graphical
         TabIndex        =   9
         Top             =   360
         Width           =   1935
      End
      Begin VB.Frame Frame2 
         BackColor       =   &H008080FF&
         Caption         =   "T/C数据显示区"
         BeginProperty Font 
            Name            =   "楷体_GB2312"
            Size            =   12
            Charset         =   134
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         ForeColor       =   &H00FF0000&
         Height          =   1695
         Left            =   600
         TabIndex        =   7
         Top             =   2640
         Width           =   7575
         Begin MSFlexGridLib.MSFlexGrid Grid1 
            Height          =   1095
            Left            =   480
            TabIndex        =   8
            Top             =   360
            Width           =   6735
            _ExtentX        =   11880
            _ExtentY        =   1931
            _Version        =   393216
         End
      End
      Begin VB.TextBox Txt3 
         Height          =   375
         Left            =   1920
         TabIndex        =   6
         Top             =   1800
         Width           =   1695
      End
      Begin VB.TextBox Txt2 
         Height          =   375
         Left            =   1920
         TabIndex        =   5
         Top             =   1080
         Width           =   1455
      End
      Begin VB.TextBox Txt1 
         Height          =   375
         Left            =   1920
         TabIndex        =   4
         Top             =   480
         Width           =   1455
      End
      Begin VB.Label Label4 
         BackStyle       =   0  'Transparent
         Caption         =   "指示灯,蓝为正常,红为不正常"
         BeginProperty Font 
            Name            =   "楷体_GB2312"
            Size            =   12
            Charset         =   134
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         ForeColor       =   &H00C00000&
         Height          =   495
         Left            =   3840
         TabIndex        =   11
         Top             =   1920
         Width           =   2535
      End
      Begin VB.Shape Shape1 
         FillColor       =   &H0000FFFF&
         FillStyle       =   0  'Solid
         Height          =   975
         Left            =   4080
         Shape           =   3  'Circle
         Top             =   480
         Width           =   1095
      End
      Begin VB.Label Label3 
         BackStyle       =   0  'Transparent
         Caption         =   "接收的字节"
         BeginProperty Font 
            Name            =   "楷体_GB2312"
            Size            =   12
            Charset         =   134
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         ForeColor       =   &H000000FF&
         Height          =   255
         Left            =   120
         TabIndex        =   3
         Top             =   1800
         Width           =   1335
      End
      Begin VB.Label Label2 
         BackStyle       =   0  'Transparent
         Caption         =   "要读T/C数目"
         BeginProperty Font 
            Name            =   "楷体_GB2312"
            Size            =   12
            Charset         =   134
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         ForeColor       =   &H000000FF&
         Height          =   375
         Left            =   120
         TabIndex        =   2
         Top             =   1200
         Width           =   1455
      End
      Begin VB.Label Label1 
         BackStyle       =   0  'Transparent
         Caption         =   "起始T/C号"
         BeginProperty Font 
            Name            =   "楷体_GB2312"
            Size            =   12
            Charset         =   134
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         ForeColor       =   &H000000FF&
         Height          =   375
         Left            =   240
         TabIndex        =   1
         Top             =   480
         Width           =   1455
      End
   End
End
Attribute VB_Name = "Form11"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Public Function fcs(ByVal inputstr As String) As String
  Dim slen, i, xorresult As Integer
Dim tempfcs As String
slen = Len(inputstr)
xorresult = 0
For i = 1 To slen
xorresult = xorresult Xor Asc(Mid$(inputstr, i, 1))
Next i
tempfcs = Hex$(xorresult)
If Len(tempfcs) = 1 Then tempfcs = "0" + tempfcs
fcs = tempfcs
End Function



' 用途:将十六进制转化为十进制
' 输入:Hex(十六进制数)
' 输入数据类型:String
' 输出:HEX_to_DEC(十进制数)
' 输出数据类型:Long
' 输入的最大数为7FFFFFFF,输出的最大数为2147483647
Public Function HEX_to_DEC(ByVal Hex As String) As Long
    Dim i As Long
    Dim B As Long
    
    Hex = UCase(Hex)
    For i = 1 To Len(Hex)
        Select Case Mid(Hex, Len(Hex) - i + 1, 1)
            Case "0": B = B + 16 ^ (i - 1) * 0
            Case "1": B = B + 16 ^ (i - 1) * 1
            Case "2": B = B + 16 ^ (i - 1) * 2
            Case "3": B = B + 16 ^ (i - 1) * 3
            Case "4": B = B + 16 ^ (i - 1) * 4
            Case "5": B = B + 16 ^ (i - 1) * 5
            Case "6": B = B + 16 ^ (i - 1) * 6
            Case "7": B = B + 16 ^ (i - 1) * 7
            Case "8": B = B + 16 ^ (i - 1) * 8
            Case "9": B = B + 16 ^ (i - 1) * 9
            Case "A": B = B + 16 ^ (i - 1) * 10
            Case "B": B = B + 16 ^ (i - 1) * 11
            Case "C": B = B + 16 ^ (i - 1) * 12
            Case "D": B = B + 16 ^ (i - 1) * 13
            Case "E": B = B + 16 ^ (i - 1) * 14
            Case "F": B = B + 16 ^ (i - 1) * 15
        End Select
    Next i
    HEX_to_DEC = B
End Function



Public Sub tabinit()
Rem 初始化表格
Dim i As Integer

Grid1.Rows = 2
Grid1.Cols = 20 + 1
Rem 表格的标题
  Grid1.Col = 0
  Grid1.Row = 0: Grid1.Text = "DM地址编号"
  Grid1.Row = 1: Grid1.Text = "DM值"
Rem 写表格的第一行表示地址编号
Grid1.Row = 0
For i = 1 To 20
Grid1.Col = i: Grid1.Text = "" + Str$(i)
Next i

Rem 表格显示数据的开始位置
Grid1.TopRow = 1
Grid1.LeftCol = 1

End Sub





Private Sub Cmd1_Click()
Dim A As String
Dim B As String
Dim C As String
 Dim tp As String
 Dim X As String
 Dim i As Integer
 Dim NUM(20) As String
 Dim DM(20) As String
 Dim BFCS As String
 Dim N As Integer
 
 
If Txt1.Text = "" Then
X = MsgBox("起始T/C号不能为空", 16)
Exit Sub
End If
 If Txt2.Text = "" Then
X = MsgBox("T/C数不能为空", 16)
Exit Sub
End If
N = Txt2.Text
 tp = "@00RG"
 A = tp + Txt1.Text + Txt2.Text + fcs(tp + Txt1.Text + Txt2.Text) + "*" + Chr$(13)



Rem 如果端口没有开,把端口打开
If MSComm1.PortOpen = False Then

 MSComm1.PortOpen = True
End If
MSComm1.InBufferCount = 0
 MSComm1.Output = A
 
N = Txt2.Text

 
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 10 + N
 B = MSComm1.Input
 Txt3.Text = B
 

 
 
BFCS = fcs(Mid((B), 1, Len(B) - 4))

Rem 判断通讯是否正常

  If BFCS = Mid(B, Len(B) - 3, 2) Then
  Shape1.FillColor = vbBlue
    X = MsgBox("通讯成功", 16)
           Shape1.FillColor = vbBlue
     
      
      
  Else: Shape1.FillColor = vbRed
  X = MsgBox("通讯不成功", 16)
     
        Exit Sub
End If


  For i = 0 To N - 1

 NUM(i) = Mid((B), 8 + i, 1)
 Next i

 
 
 
 
 For i = 0 To 19
 Grid1.Row = 1: Grid1.Col = i + 1
 Grid1.Text = NUM(i)
 Next i

 
 Shape1.FillColor = vbYellow



End Sub
Private Sub CMD2_Click()
Dim X As String
Dim p As String
Dim q As String
p = "自动读T/C的状态"
q = "停止持续读T/C"
If Cmd2.Caption = p Then
 

   If Txt1.Text = "" Then
  X = MsgBox("地址不能为空", 16)
  Exit Sub
   End If
 If Txt2.Text = "" Then
X = MsgBox("字节数不能为空", 16)
Exit Sub
End If

Cmd2.Caption = q
Timer1.Enabled = True
Else: Cmd2.Caption = p
Timer1.Enabled = False
End If
End Sub

Private Sub Form_Load()

Rem 初始化

 MSComm1.CommPort = 3
 MSComm1.Settings = "9600,E,7,2"
 MSComm1.InputLen = 0
Timer1.Interval = 2000

Timer1.Enabled = False
Call tabinit
End Sub

Private Sub Form_Unload(Cancel As Integer)
Form2.Enabled = True
Form2.Show

Unload Form3

End Sub

Private Sub Timer1_Timer()
Dim A As String
Dim B As String
Dim C As String
 Dim tp As String
 Dim X As String
 Dim i As Integer
 Dim NUM(20) As String
 Dim DM(20) As String
 Dim BFCS As String
 Dim N As Integer
 
 Timer1.Enabled = False


 
 
If Txt1.Text = "" Then
X = MsgBox("起始T/C号不能为空", 16)
Exit Sub
End If
 If Txt2.Text = "" Then
X = MsgBox("T/C数不能为空", 16)
Exit Sub
End If
N = Txt2.Text
 tp = "@00RG"
 A = tp + Txt1.Text + Txt2.Text + fcs(tp + Txt1.Text + Txt2.Text) + "*" + Chr$(13)



Rem 如果端口没有开,把端口打开
 
 If MSComm1.PortOpen = False Then
 MSComm1.PortOpen = True
 End If
 MSComm1.InBufferCount = 0
 MSComm1.Output = A
N = Txt2.Text

 


Do
DoEvents
Loop Until MSComm1.InBufferCount >= 10 + N
 B = MSComm1.Input
 Txt3.Text = B
 

 
 
BFCS = fcs(Mid((B), 1, Len(B) - 4))

Rem 判断通讯是否正常

  If BFCS = Mid(B, Len(B) - 3, 2) Then
  Shape1.FillColor = vbBlue
    X = MsgBox("通讯成功", 16)
           Shape1.FillColor = vbBlue
     
      
      
  Else: Shape1.FillColor = vbRed
  X = MsgBox("通讯不成功", 16)
     
        Exit Sub
End If


  For i = 0 To N - 1

 NUM(i) = Mid((B), 8 + i, 1)
 Next i

 
 
 
 
 For i = 0 To 19
 Grid1.Row = 1: Grid1.Col = i + 1
 Grid1.Text = NUM(i)
 Next i

 
 Shape1.FillColor = vbYellow

Timer1.Enabled = True
 
End Sub


⌨️ 快捷键说明

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