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

📄 test.frm

📁 本压缩文件主要用于上位机与一些智能仪表的通讯
💻 FRM
字号:
VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.Form Form1 
   Caption         =   "通讯测试"
   ClientHeight    =   4890
   ClientLeft      =   60
   ClientTop       =   450
   ClientWidth     =   8145
   Icon            =   "Test.frx":0000
   LinkTopic       =   "Form1"
   ScaleHeight     =   4890
   ScaleWidth      =   8145
   StartUpPosition =   3  '窗口缺省
   Begin VB.Timer Timer1 
      Enabled         =   0   'False
      Interval        =   500
      Left            =   6960
      Top             =   4320
   End
   Begin VB.Frame Frame2 
      Caption         =   "端口设置"
      Height          =   3135
      Left            =   5640
      TabIndex        =   3
      Top             =   120
      Width           =   2415
      Begin VB.ComboBox ComBaud 
         Height          =   300
         ItemData        =   "Test.frx":08CA
         Left            =   360
         List            =   "Test.frx":08CC
         Style           =   2  'Dropdown List
         TabIndex        =   9
         Top             =   1920
         Width           =   1575
      End
      Begin VB.CommandButton Command1 
         Caption         =   "打开端口"
         Height          =   495
         Left            =   480
         TabIndex        =   7
         Top             =   2400
         Width           =   1455
      End
      Begin VB.Frame Frame1 
         Caption         =   "端口选择"
         Height          =   735
         Left            =   240
         TabIndex        =   4
         Top             =   480
         Width           =   1935
         Begin VB.OptionButton Option1 
            Caption         =   "COM1"
            Height          =   255
            Index           =   0
            Left            =   120
            TabIndex        =   6
            Top             =   360
            Value           =   -1  'True
            Width           =   735
         End
         Begin VB.OptionButton Option1 
            Caption         =   "COM2"
            Height          =   255
            Index           =   1
            Left            =   1080
            TabIndex        =   5
            Top             =   360
            Width           =   735
         End
      End
      Begin VB.Label Label1 
         Caption         =   "通讯波特率:"
         Height          =   255
         Left            =   360
         TabIndex        =   8
         Top             =   1440
         Width           =   1215
      End
   End
   Begin VB.CommandButton Command2 
      Caption         =   "发 送"
      Height          =   375
      Left            =   5760
      TabIndex        =   2
      Top             =   4320
      Width           =   1335
   End
   Begin VB.TextBox InText 
      Height          =   3735
      Left            =   120
      MultiLine       =   -1  'True
      ScrollBars      =   2  'Vertical
      TabIndex        =   1
      Top             =   120
      Width           =   5415
   End
   Begin VB.TextBox OutText 
      Height          =   375
      Left            =   120
      TabIndex        =   0
      Top             =   4320
      Width           =   5415
   End
   Begin MSCommLib.MSComm MSComm1 
      Left            =   7440
      Top             =   4200
      _ExtentX        =   1005
      _ExtentY        =   1005
      _Version        =   393216
      DTREnable       =   -1  'True
      InputMode       =   1
   End
   Begin VB.Label Label4 
      Caption         =   "www.hbkj.com.cn"
      Height          =   375
      Left            =   6000
      TabIndex        =   11
      Top             =   3720
      Width           =   2055
   End
   Begin VB.Label Label2 
      Caption         =   "十六进制命令输入区:(不要填写CRC部分,发送时软件自动添加CRC值)"
      Height          =   375
      Left            =   120
      TabIndex        =   10
      Top             =   4080
      Width           =   5655
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'****************************************Copyright (c)**************************************************
'**                              Beijing HBKJ Development Co.,LTD.
'**                                 http://www.hbkj.com.cn
'**
'**--------------File Info-------------------------------------------------------------------------------
'** File name:           pycomvb
'** Last modified Date:  2006-2-13
'** Last Version:        1.0
'** Descriptions:        HBKJ系列仪表通讯VB6.0代码读、写例程,内含CRC16的计算,符合标准的MODBUS_RTU通信格式
'**------------------------------------------------------------------------------------------------------
'** Created by:         Gao Wei
'** Created date:       2006-2-13
'** Version:            1.0
'**------------------------------------------------------------------------------------------------------
'** Modified by:
'** Modified date:
'** Version:
'** Descriptions:
'**------------------------------------------------------------------------------------------------------
'** 技术支持:
'**             QQ: 270991828
'**             Email: gwemail@126.com
'********************************************************************************************************

Function CRC16(data() As Byte, n As Byte) As Long
      Dim CRC16Lo As Byte, CRC16Hi As Byte
      Dim CL As Byte, CH As Byte
      Dim SaveHi As Byte, SaveLo As Byte
      Dim i As Integer
      Dim Flag As Integer
      CRC16Lo = &HFF
      CRC16Hi = &HFF
      CL = &H1
      CH = &HA0
      For i = 0 To UBound(data)
        CRC16Lo = CRC16Lo Xor data(i)
        For Flag = 0 To 7
          SaveHi = CRC16Hi
          SaveLo = CRC16Lo
          CRC16Hi = CRC16Hi \ 2
          CRC16Lo = CRC16Lo \ 2
          If ((SaveHi And &H1) = &H1) Then
            CRC16Lo = CRC16Lo Or &H80
          End If
          If ((SaveLo And &H1) = &H1) Then
            CRC16Hi = CRC16Hi Xor CH
            CRC16Lo = CRC16Lo Xor CL
          End If
        Next Flag
      Next i
       If n = 0 Then
          CRC16 = CRC16Lo
       Else
          CRC16 = CRC16Hi
       End If
End Function

Private Sub ComBaud_Change()
    Select Case ComBaud.ListIndex
        Case 0
            MSComm1.Settings = "1200,n,8,1"
        Case 1
            MSComm1.Settings = "2400,n,8,1"
        Case 2
            MSComm1.Settings = "4800,n,8,1"
        Case Else
            MSComm1.Settings = "9600,n,8,1"
    End Select
End Sub

Private Sub Command1_Click()
    If MSComm1.PortOpen = False Then
        MSComm1.PortOpen = True
        Command1.Caption = "关闭端口"
    Else
        MSComm1.PortOpen = False
        Command1.Caption = "打开端口"
    End If
End Sub

Private Sub Command2_Click()
    Dim i%, j%, k%, Buf$
    Dim OutByte() As Byte
    Dim OutB() As Byte
        
    Buf = Trim(OutText.Text)
    i = Len(Buf)
    k = 1
    
    If i Mod 2 <> 0 Or i < 1 Then
         MsgBox "请输入两位十六进制!不要加空格!", vbExclamation + vbOKOnly, "输入信息"
    Else
        ReDim OutB(i / 2 - 1)
        ReDim OutByte(i / 2 + 1)
        j = 0
        Do While i > 0
            OutB(j) = CByte("&H" & Mid(Buf, k, 2))
            k = k + 2
            i = i - 2
            j = j + 1
        Loop
        
        For i = 0 To (j - 1)
            OutByte(i) = OutB(i)
        Next i
                
        OutByte(j) = CRC16(OutB, 0)    '校验和低位
        OutByte(j + 1) = CRC16(OutB, 1)    '校验和高位
        MSComm1.InBufferCount = 0
        MSComm1.Output = OutByte
        Timer1.Enabled = True
    End If
End Sub


Private Sub Form_Load()
    ComBaud.AddItem "1200"
    ComBaud.AddItem "2400"
    ComBaud.AddItem "4800"
    ComBaud.AddItem "9600"
    ComBaud.ListIndex = 3
    MSComm1.Settings = "9600,n,8,1"
    MSComm1.PortOpen = True
    Command1.Caption = "关闭端口"
End Sub

Private Sub Option1_Click(Index As Integer)
    'On Error Resume Next
    MSComm1.PortOpen = False
    MSComm1.CommPort = Index + 1
    If MSComm1.PortOpen Then
        MsgBox "所选的端口被占用!", vbExclamation + vbOKOnly, "通讯端口信息"
        Exit Sub
    Else
        MSComm1.PortOpen = True
    End If
End Sub

Private Sub Timer1_Timer()
    Dim InByte() As Byte
    Dim i%, Buf$
    
    Timer1.Enabled = False
    InByte = MSComm1.Input
    For i = LBound(InByte) To UBound(InByte)
        Buf = Buf + Hex(InByte(i)) + Chr(32)
    Next i
    InText.Text = InText.Text + Buf
End Sub

⌨️ 快捷键说明

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