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

📄 form1.frm

📁 串口通信主程序,一个自己编写的串口通讯程序结合串口通信从程序进行运作.
💻 FRM
📖 第 1 页 / 共 2 页
字号:
VERSION 5.00
Object = "{5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0"; "MSFLXGRD.OCX"
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.Form Form1 
   Caption         =   "Form1"
   ClientHeight    =   4470
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   9060
   LinkTopic       =   "Form1"
   ScaleHeight     =   4470
   ScaleWidth      =   9060
   StartUpPosition =   3  '窗口缺省
   Begin MSCommLib.MSComm MSComm1 
      Left            =   120
      Top             =   2280
      _ExtentX        =   1005
      _ExtentY        =   1005
      _Version        =   393216
      DTREnable       =   -1  'True
   End
   Begin MSFlexGridLib.MSFlexGrid viewGrid 
      Height          =   1335
      Left            =   120
      TabIndex        =   18
      Top             =   3000
      Width           =   8775
      _ExtentX        =   15478
      _ExtentY        =   2355
      _Version        =   393216
      Rows            =   4
      Cols            =   16
   End
   Begin VB.Frame Frame3 
      Caption         =   "端口信息"
      Height          =   2655
      Left            =   6480
      TabIndex        =   2
      Top             =   240
      Width           =   2415
      Begin VB.CommandButton btnCanel 
         Caption         =   "取消"
         Height          =   255
         Left            =   1680
         TabIndex        =   21
         Top             =   2280
         Width           =   615
      End
      Begin VB.CommandButton btnRestore 
         Caption         =   "还原"
         Height          =   255
         Left            =   960
         TabIndex        =   20
         Top             =   2280
         Width           =   615
      End
      Begin VB.CommandButton btnSave 
         Caption         =   "保存"
         Height          =   255
         Left            =   120
         TabIndex        =   19
         Top             =   2280
         Width           =   615
      End
      Begin VB.ComboBox Combo 
         Height          =   300
         Index           =   4
         Left            =   1080
         TabIndex        =   12
         Top             =   1800
         Width           =   1215
      End
      Begin VB.ComboBox Combo 
         Height          =   300
         Index           =   3
         Left            =   1080
         TabIndex        =   11
         Top             =   1440
         Width           =   1215
      End
      Begin VB.ComboBox Combo 
         Height          =   300
         Index           =   2
         Left            =   1080
         TabIndex        =   10
         Top             =   1080
         Width           =   1215
      End
      Begin VB.ComboBox Combo 
         Height          =   300
         Index           =   1
         Left            =   1080
         TabIndex        =   9
         Top             =   720
         Width           =   1215
      End
      Begin VB.ComboBox Combo 
         Height          =   300
         Index           =   0
         Left            =   1080
         TabIndex        =   8
         Top             =   360
         Width           =   1215
      End
      Begin VB.Label Label5 
         Caption         =   "奇偶校验"
         Height          =   375
         Left            =   240
         TabIndex        =   17
         Top             =   1800
         Width           =   735
      End
      Begin VB.Label Label4 
         Caption         =   "停止位"
         Height          =   255
         Left            =   240
         TabIndex        =   16
         Top             =   1440
         Width           =   735
      End
      Begin VB.Label Label3 
         Caption         =   "数据位"
         Height          =   255
         Left            =   240
         TabIndex        =   15
         Top             =   1080
         Width           =   735
      End
      Begin VB.Label Label2 
         Caption         =   "波特率"
         Height          =   375
         Left            =   240
         TabIndex        =   14
         Top             =   720
         Width           =   735
      End
      Begin VB.Label Label1 
         Caption         =   "端口号"
         Height          =   255
         Left            =   240
         TabIndex        =   13
         Top             =   360
         Width           =   855
      End
   End
   Begin VB.Frame Frame2 
      Caption         =   "通讯信息"
      Height          =   2655
      Left            =   2280
      TabIndex        =   1
      Top             =   240
      Width           =   4095
      Begin VB.TextBox Text1 
         Height          =   2295
         Left            =   120
         TabIndex        =   3
         Top             =   240
         Width           =   3855
      End
   End
   Begin VB.Frame Frame1 
      Caption         =   "发送请求"
      Height          =   2655
      Left            =   120
      TabIndex        =   0
      Top             =   240
      Width           =   2055
      Begin VB.CommandButton btnCANCEL 
         Caption         =   "取消"
         Height          =   375
         Left            =   480
         TabIndex        =   7
         Top             =   1680
         Width           =   945
      End
      Begin VB.CommandButton btnOK 
         Caption         =   "确定"
         Height          =   375
         Left            =   480
         TabIndex        =   6
         Top             =   720
         Width           =   960
      End
      Begin VB.CommandButton btnXH 
         Caption         =   "循环"
         Height          =   375
         Left            =   480
         TabIndex        =   5
         Top             =   1200
         Width           =   975
      End
      Begin VB.ComboBox comboASK 
         Height          =   300
         Left            =   120
         TabIndex        =   4
         Text            =   "申请所有测量数据"
         Top             =   240
         Width           =   1815
      End
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
 Dim data(300) As Byte
 Dim receiveFault(15) As Integer
 Dim receivePC(15) As Integer
 Dim receiveN(15) As Integer
 Dim receiveStatic As Integer
 Dim package() As Byte
Sub trans_data(i As Integer)
'发出包文
Dim package() As Byte

Select Case i
Case 1
'ACK
    ReDim package(13) As Byte
    package(1) = &HEB
    package(2) = &H90
    package(3) = &HEB
    package(4) = &H90
    package(5) = &H2
'addr
    package(6) = &H1
'info
    package(7) = &H6
    package(8) = &H1
    package(9) = &H1
    package(10) = &H4
'sum 6-10
    sump = sumcode(package, 1, 13)
    sumstr = Right("0000" + hex(sump), 4)
    lhex = Right(sumstr, 2)
    hhex = Left(sumstr, 2)
    package(11) = str_hex(lhex)
    package(12) = str_hex(hhex)
'end
    package(13) = &H3
    LEN_P = 13
    
     Text1.Text = Text1.Text + "发送ASK" + Chr(13) + Chr(10)
Case 2
'NAK
    ReDim package(13) As Byte
    package(1) = &HEB
    package(2) = &H90
    package(3) = &HEB
    package(4) = &H90
    package(5) = &H2
'addr
    package(6) = &H1
'info
    package(7) = &H15
    package(8) = &H1
    package(9) = &H1
    package(10) = &H4
'sum 6-10
    sump = sumcode(package, 1, 13)
    sumstr = Right("0000" + hex(sump), 4)
    lhex = Right(sumstr, 2)
    hhex = Left(sumstr, 2)
    package(11) = str_hex(lhex)
    package(12) = str_hex(hhex)
    'end
    package(13) = &H3
    LEN_P = 13
Text1.Text = Text1.Text + "发送NCK" + Chr(13) + Chr(10)
Case 3
'申请故障状态-C1
    ReDim package(13) As Byte
    package(1) = &HEB
    package(2) = &H90
    package(3) = &HEB
    package(4) = &H90
    package(5) = &H2
'addr
    package(6) = &H1
'info
    package(7) = &H40
    package(8) = &H1
    package(9) = &H1
    package(10) = &H4
'sum 6-10
    sump = sumcode(package, 1, 13)
    sumstr = Right("0000" + hex(sump), 4)
    lhex = Right(sumstr, 2)
    hhex = Left(sumstr, 2)
    package(11) = str_hex(lhex)
    package(12) = str_hex(hhex)
'end
    package(13) = &H3
    LEN_P = 13
    
    Text1.Text = Text1.Text + "发送C1申请故障信息" + Chr(13) + Chr(10)
Case 4
'申请放电量-C2
    ReDim package(13) As Byte
    package(1) = &HEB
    package(2) = &H90
    package(3) = &HEB
    package(4) = &H90
    package(5) = &H2
'addr
    package(6) = &H1
'info
    package(7) = &H41
    package(8) = &H1
    package(9) = &H1
    package(10) = &H4
'sum 6-10
    sump = sumcode(package, 1, 13)
    sumstr = Right("0000" + hex(sump), 4)
    lhex = Right(sumstr, 2)
    hhex = Left(sumstr, 2)
    package(11) = str_hex(lhex)
    package(12) = str_hex(hhex)
'end
    package(13) = &H3
    LEN_P = 13
    
        Text1.Text = Text1.Text + "发送C2申请放电量信息" + Chr(13) + Chr(10)
Case 5
'申请脉冲数-C3
    ReDim package(13) As Byte
    package(1) = &HEB
    package(2) = &H90
    package(3) = &HEB
    package(4) = &H90
    package(5) = &H2
'addr
    package(6) = &H1
'info
    package(7) = &H42
    package(8) = &H1
    package(9) = &H1
    package(10) = &H4
'sum 6-10
    sump = sumcode(package, 1, 13)
    sumstr = Right("0000" + hex(sump), 4)
    lhex = Right(sumstr, 2)
    hhex = Left(sumstr, 2)
    package(11) = str_hex(lhex)
    package(12) = str_hex(hhex)
'end
    package(13) = &H3
    LEN_P = 13
    
Text1.Text = Text1.Text + "发送C3申请脉冲数信息" + Chr(13) + Chr(10)
Case 6
'申请所有测量数据-C4
    ReDim package(13) As Byte
    package(1) = &HEB
    package(2) = &H90
    package(3) = &HEB
    package(4) = &H90
    package(5) = &H2
'addr
    package(6) = &H1
'info
    package(7) = &H43
    package(8) = &H1
    package(9) = &H1
    package(10) = &H4
'sum 6-10
    sump = sumcode(package, 1, 13)
    sumstr = Right("0000" + hex(sump), 4)
    lhex = Right(sumstr, 2)
    hhex = Left(sumstr, 2)
    package(11) = str_hex(lhex)
    package(12) = str_hex(hhex)
'end
    package(13) = &H3
    LEN_P = 13
Text1.Text = Text1.Text + "发送C4申请所有测量数据信息" + Chr(13) + Chr(10)
End Select


For i = 1 To LEN_P
    Text1.Text = Text1.Text + Right(hex(package(i)), 2) + " "
Next i
    Text1.Text = Text1.Text + Chr(13) + Chr(10)
    
MSComm1.Output = package
'检测数据是否全部发送完毕
Do
Loop Until MSComm1.OutBufferCount = 0

End Sub
Function receive_data()
Dim tempdata() As Byte
Dim lhex As String
Dim hhex As String
Dim i As Integer
Dim length As Integer
Dim lengthBW As Integer
Dim tdata As Variant
Text1.Refresh

tti = Now
'循环测试串口是否有数据 等待时间为30秒
tdelay = 30
Do
DoEvents

tti1 = (Now - tti) * 24# * 60# * 60#

Loop Until MSComm1.InBufferCount > 0 Or tti1 > tdelay

'如果有数据
If MSComm1.InBufferCount > 0 Then
                          
            tti = Now
            '循环测试串口是有数据 等待时间为0.5分=30秒
            ttdelay = 1
            Do
            DoEvents
            tti1 = (Now - tti) * 24# * 60# * 60#
            Loop Until tti1 > ttdelay
            
            '取出接受数据判断有效性,方数据到data中
            length = MSComm1.InBufferCount
            ReDim tempdata(length)
            
            For i = 1 To length
                 tdata = MSComm1.Input
                 tempdata(i) = tdata(0)
                 
            Next i
            
            
                    For i = 1 To length - 12
                            
                                If tempdata(i) = &HEB Then
                                        
                                            If tempdata(i + 1) = &H90 Then
                                            
                                                        If tempdata(i + 2) = &HEB Then
                                                        
                                                                    If tempdata(i + 3) = &H90 Then
                                                                    
                                                                                If tempdata(i + 4) = &H2 Then
                                                                                
                                                                                        lengthBW = tempdata(i + 9)
                                                                                        
                                                                                        If tempdata(i + 5 + lengthBW + 3) = &H3 Then
                                                                                                        sump = sumcode(tempdata(), i, i + 5 + lengthBW + 3)

⌨️ 快捷键说明

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