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

📄 form6.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 Form6 
   BackColor       =   &H00FFC0C0&
   Caption         =   "读IR/SR区"
   ClientHeight    =   5685
   ClientLeft      =   60
   ClientTop       =   435
   ClientWidth     =   9990
   LinkTopic       =   "Form6"
   ScaleHeight     =   5685
   ScaleWidth      =   9990
   StartUpPosition =   2  '屏幕中心
   Begin VB.TextBox Text1 
      Height          =   270
      Left            =   5520
      TabIndex        =   12
      Top             =   5400
      Width           =   2895
   End
   Begin VB.Timer Timer1 
      Left            =   6480
      Top             =   120
   End
   Begin MSCommLib.MSComm MSComm1 
      Left            =   3000
      Top             =   120
      _ExtentX        =   1005
      _ExtentY        =   1005
      _Version        =   393216
      DTREnable       =   -1  'True
   End
   Begin VB.Frame Frame1 
      BackColor       =   &H00FFC0FF&
      Caption         =   "读IR/SR数据"
      BeginProperty Font 
         Name            =   "楷体_GB2312"
         Size            =   12
         Charset         =   134
         Weight          =   700
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H000000FF&
      Height          =   4815
      Left            =   240
      TabIndex        =   0
      Top             =   480
      Width           =   9375
      Begin VB.Frame Frame2 
         BackColor       =   &H008080FF&
         Caption         =   "IR/SR数据显示区"
         BeginProperty Font 
            Name            =   "楷体_GB2312"
            Size            =   12
            Charset         =   134
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         ForeColor       =   &H00FF0000&
         Height          =   1815
         Left            =   480
         TabIndex        =   9
         Top             =   2640
         Width           =   8295
         Begin MSFlexGridLib.MSFlexGrid Grid1 
            Height          =   855
            Left            =   480
            TabIndex        =   10
            Top             =   480
            Width           =   7335
            _ExtentX        =   12938
            _ExtentY        =   1508
            _Version        =   393216
         End
      End
      Begin VB.CommandButton Cmd2 
         BackColor       =   &H00C0C0FF&
         Caption         =   "自动读IR/SR数据"
         BeginProperty Font 
            Name            =   "楷体_GB2312"
            Size            =   12
            Charset         =   134
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         Height          =   375
         Left            =   5760
         Style           =   1  'Graphical
         TabIndex        =   8
         Top             =   1320
         Width           =   2295
      End
      Begin VB.CommandButton Cmd1 
         BackColor       =   &H00C0C0FF&
         Caption         =   "读IR/SR数据"
         BeginProperty Font 
            Name            =   "楷体_GB2312"
            Size            =   12
            Charset         =   134
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         Height          =   375
         Left            =   5760
         Style           =   1  'Graphical
         TabIndex        =   7
         Top             =   480
         Width           =   2055
      End
      Begin VB.TextBox Txt3 
         Height          =   390
         Left            =   1920
         TabIndex        =   6
         Top             =   1800
         Width           =   1815
      End
      Begin VB.TextBox Txt2 
         Height          =   375
         Left            =   1920
         TabIndex        =   5
         Top             =   1080
         Width           =   1575
      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       =   &H00FF0000&
         Height          =   615
         Left            =   3960
         TabIndex        =   11
         Top             =   1800
         Width           =   1935
      End
      Begin VB.Shape Shape1 
         BackColor       =   &H00000000&
         FillColor       =   &H0000FFFF&
         FillStyle       =   0  'Solid
         Height          =   1095
         Left            =   4080
         Shape           =   3  'Circle
         Top             =   600
         Width           =   1335
      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             =   1920
         Width           =   1455
      End
      Begin VB.Label Label2 
         BackStyle       =   0  'Transparent
         Caption         =   "读IR/SR字节数"
         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        =   2
         Top             =   1200
         Width           =   1455
      End
      Begin VB.Label Label1 
         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          =   375
         Left            =   240
         TabIndex        =   1
         Top             =   600
         Width           =   1095
      End
   End
End
Attribute VB_Name = "Form6"
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_BIN(二 进 制数)
' 输出数据类型:String
' 输入的最大数为2147483647个字符
Public Function HEX_to_BIN(ByVal Hex As String) As String
    Dim i As Long
    Dim B As String
    
    Hex = UCase(Hex)
    For i = 1 To Len(Hex)
        Select Case Mid(Hex, i, 1)
            Case "0": B = B & "0000"
            Case "1": B = B & "0001"
            Case "2": B = B & "0010"
            Case "3": B = B & "0011"
            Case "4": B = B & "0100"
            Case "5": B = B & "0101"
            Case "6": B = B & "0110"
            Case "7": B = B & "0111"
            Case "8": B = B & "1000"
            Case "9": B = B & "1001"
            Case "A": B = B & "1010"
            Case "B": B = B & "1011"
            Case "C": B = B & "1100"
            Case "D": B = B & "1101"
            Case "E": B = B & "1110"
            Case "F": B = B & "1111"
        End Select
    Next i
   
    HEX_to_BIN = 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 = "SR/IR位地址编号"
  Grid1.Row = 1: Grid1.Text = "SR/IR位值"
Rem 写表格的第一行表示地址编号
Grid1.Row = 0
For i = 1 To 16
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 As String
 Dim DM(20) As String
 Dim BFCS As String
 Dim N As Integer
 Dim M As String
 
 
If Txt1.Text = "" Then
X = MsgBox("地址不能为空", 16)
Exit Sub
End If
 If Txt2.Text = "" Then
X = MsgBox("字节数不能为空", 16)
Exit Sub
End If
N = Txt2.Text
 tp = "@00RD"
 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 + 4 * 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


 

 NUM = Mid((B), 8, 4)

 M = HEX_to_BIN(NUM)
Text1.Text = M
 
 For i = 0 To 15
 DM(i) = Mid((M), i + 1, 1)
 Next i
 
  
 
 
 For i = 0 To 15
 Grid1.Row = 1: Grid1.Col = i + 1
 Grid1.Text = DM(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 = "自动读IR/SR数据"
q = "停止持续读SR/IR数据"
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 As String
 Dim DM(20) As String
 Dim BFCS As String
 Dim N As Integer
 Dim M As String
 
 
 

N = Txt2.Text
 tp = "@00RD"
 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 + 4 * 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


 

 NUM = Mid((B), 8, 4)

 M = HEX_to_BIN(NUM)
Text1.Text = M
 
 For i = 0 To 15
 DM(i) = Mid((M), i + 1, 1)
 Next i
 
  
 
 
 For i = 0 To 15
 Grid1.Row = 1: Grid1.Col = i + 1
 Grid1.Text = DM(i)
 Next i

 
 Shape1.FillColor = vbYellow
Timer1.Enabled = True
 
End Sub


⌨️ 快捷键说明

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