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

📄 test.frm

📁 GSM模块测试小程序。自动换通讯波特率测试串口
💻 FRM
字号:
VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.Form Form1 
   Caption         =   "GSM模块测试"
   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
      BaudRate        =   115200
      InputMode       =   1
   End
   Begin VB.Label Label2 
      Caption         =   "下面可更改查看网络信号质量读时间"
      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
Dim Work_Index As Byte
Dim BTL_Index As Byte
Dim CSQ_DELAY As Byte
Dim CSQ_DELAY_valid As Byte
Dim CSQ_DELAY_OK As Byte
Dim BTL$
Private Sub ComBaud_Change()
    Select Case ComBaud.ListIndex
        Case 0
            MSComm1.Settings = "115200,n,8,1"
        Case 1
            MSComm1.Settings = "57600,n,8,1"
        Case 2
            MSComm1.Settings = "38400,n,8,1"
        Case Else
            MSComm1.Settings = "19200,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 b$, Buf$

    If CSQ_DELAY_OK = 0 Then
        b = Trim(OutText.Text)     '/** 从OutText得到测网络信号质量延时并去掉左右空格 **/
        'OutText.Text = " "
        If Len(b) >= 3 Then
            MsgBox "数太大,两位内!"
        Else
            '/** 得到测网络信号质量延时 **/
            If Len(b) = 0 Then
            Else
                If Len(b) = 2 Then
                    Buf = Mid(b, 1, 1)              '/** 从字符串中取一位ASCII码 **/
                    CSQ_DELAY = Val(Buf) * 10       '/** 将此位ASCII码转化成二进制数再转存 **/
                    Buf = Mid(b, 2, 1)              '/** 从字符串中取一位ASCII码 **/
                    CSQ_DELAY = CSQ_DELAY + Val(Buf)
                Else
                    Buf = Mid(b, 1, 1)              '/** 从字符串中取一位ASCII码 **/
                    CSQ_DELAY = Val(Buf)            '/** 将此位ASCII码转化成二进制数再转存 **/
                End If
            End If
        End If
    Else

    End If
    
        If CSQ_DELAY = 0 Or CSQ_DELAY_OK > 30 Then CSQ_DELAY_OK = 4
        
        OutText.Text = " "
        OutText.Text = "测试开始"
        InText.Text = " "
    
        Work_Index = 0
        BTL_Index = 0
        BTL = "115200"
    
        CSQ_DELAY_OK = 1

        MSComm1.Settings = "115200,n,8,1"
        Timer1.Enabled = True
        Command2.Visible = False
End Sub

Private Sub Form_Load()
    ComBaud.AddItem "115200"
    ComBaud.AddItem "57600"
    ComBaud.AddItem "38400"
    ComBaud.AddItem "19200"
    ComBaud.ListIndex = 0
    MSComm1.Settings = "115200,n,8,1"
    MSComm1.PortOpen = True
    Command1.Caption = "关闭端口"
    Work_Index = 0
    BTL_Index = 0
    BTL = "115200"
    CSQ_DELAY_OK = 0
    CSQ_DELAY = 4
    OutText.Text = "4"
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$
    Dim Byte_y() As Byte
    Dim InTemp() As Byte
    Dim NewSize%    '/** 本次从串口缓冲区读出的数据个数 **/
        
    Select Case Work_Index
        Case 0      '/** 一、向GSM发AT回车换行,并接收GSM回码 **/
            ReDim Byte_y(3)
            Byte_y(0) = 65  '/** 'A' **/
            Byte_y(1) = 84  '/** 'T' **/
            Byte_y(2) = 13  '/** 回车 **/
            Byte_y(3) = 10  '/** 换行 **/
            
            MSComm1.InBufferCount = 0
            MSComm1.Output = Byte_y
            Work_Index = 1
        Case 1
            'Call Bin_ASCII
            NewSize = MSComm1.InBufferCount
            MSComm1.InputLen = NewSize    '/** Form_Load中MSComm1.InputLen =1,加这一条后,发6个数据读InByte()没下标越界! **/
            ReDim InTemp(NewSize)
            InByte = MSComm1.Input      '/** 读出串口缓冲区数据,读完MSComm1.InBufferCount=0,UBound(InByte) 有值 **/
            For i = 0 To NewSize - 1
                InTemp(i) = InByte(i)           '/** 在InByte = MSComm1.Input后,如果不及时读出InByte,其会失效! **/
            Next i
            
            For i = 0 To NewSize - 1
                Buf = Buf + Chr(InTemp(i)) + Chr(32)         '/** 在InByte = MSComm1.Input后,如果不及时读出InByte,其会失效! **/
            Next i
            
            
            'InByte = MSComm1.Input
            'For i = LBound(InByte) To UBound(InByte)
                'Buf = Buf + Hex(InByte(i)) + Chr(32)
            'Next i
            
            If i >= 3 Then
                Work_Index = 2
                Buf = Buf + "串口" + BTL + "正常"
            Else
                BTL_Index = BTL_Index + 1
                Buf = "从" + BTL + "换成"
                Select Case BTL_Index
                    Case 0      '/** 115200,n,8,1 **/
                        BTL = "115200"
                        MSComm1.Settings = "115200,n,8,1"
                        Work_Index = 0
                    Case 1      '/** 57600,n,8,1 **/
                        BTL = "57600"
                        MSComm1.Settings = "57600,n,8,1"
                        Work_Index = 0
                    Case 2      '/** 38400,n,8,1 **/
                        BTL = "38400"
                        MSComm1.Settings = "38400,n,8,1"
                        Work_Index = 0
                    Case 3      '/** 19200,n,8,1 **/
                        BTL = "19200"
                        MSComm1.Settings = "19200,n,8,1"
                        Work_Index = 0
                    Case Else
                        MSComm1.Settings = "115200,n,8,1"
                        Work_Index = 0
                        Buf = " "
                        BTL = "串口" + "不正常!" + "测试停止,重点击开始测试按钮重新开始下台测试!"
                        Command2.Visible = True
                        Timer1.Enabled = False
                End Select
                
                Buf = Buf + BTL + Chr(32) + Chr(32)
            End If
            
            OutText.Text = " "
            OutText.Text = Buf
            
            InText.Text = InText.Text + Buf
        
        Case 2      '/** 向GSM发AT指令选择TEXT模式:AT+CMGF=1 **/
            ReDim Byte_y(10)
            Byte_y(0) = 65  '/** 'A' **/
            Byte_y(1) = 84  '/** 'T' **/
            Byte_y(2) = 43  '/** '+' **/
            Byte_y(3) = 67  '/** 'C' **/
            Byte_y(4) = 77  '/** 'M' **/
            Byte_y(5) = 71  '/** 'G' **/
            Byte_y(6) = 70  '/** 'F' **/
        
            Byte_y(7) = 61  '/** '=' **/
            Byte_y(8) = 49  '/** '1' **/
            Byte_y(9) = 13  '/** 回车 **/
            Byte_y(10) = 10 '/** 换行 **/
            
            MSComm1.InBufferCount = 0
            MSComm1.Output = Byte_y
            Work_Index = 3
        Case 3      '/** 用设置短信服务中心地址指令看短信服务中心地址 **/
            ReDim Byte_y(9)
            Byte_y(0) = 65  '/** 'A' **/
            Byte_y(1) = 84  '/** 'T' **/
            Byte_y(2) = 43  '/** '+' **/
            Byte_y(3) = 67  '/** 'C' **/
            Byte_y(4) = 83  '/** 'S' **/
            Byte_y(5) = 67  '/** 'C' **/
            Byte_y(6) = 65  '/** 'A' **/
            Byte_y(7) = 63  '/** '?' **/
            Byte_y(8) = 13  '/** 回车 **/
            Byte_y(9) = 10  '/** 换行 **/
            
            MSComm1.InBufferCount = 0
            MSComm1.Output = Byte_y
            Work_Index = 4
        
        Case 4
            NewSize = MSComm1.InBufferCount
            MSComm1.InputLen = NewSize    '/** Form_Load中MSComm1.InputLen =1,加这一条后,发6个数据读InByte()没下标越界! **/
            ReDim InTemp(NewSize)
            InByte = MSComm1.Input      '/** 读出串口缓冲区数据,读完MSComm1.InBufferCount=0,UBound(InByte) 有值 **/
            For i = 0 To NewSize - 1
                InTemp(i) = InByte(i)           '/** 在InByte = MSComm1.Input后,如果不及时读出InByte,其会失效! **/
            Next i
            
            For i = 0 To NewSize - 1
                Buf = Buf + Chr(InTemp(i)) + Chr(32)         '/** 在InByte = MSComm1.Input后,如果不及时读出InByte,其会失效! **/
            Next i
            
            If i >= 24 Then
                Work_Index = 5
                Buf = Buf + "读SIM卡正常!" + Chr(32) + Chr(32)
            Else
                Buf = Buf + "读SIM卡不正常!" + "测试停止,重点击开始测试按钮重新开始下台测试!"
                Work_Index = 0
                Timer1.Enabled = False
                Command2.Visible = True
            End If
            
            OutText.Text = " "
            OutText.Text = Buf
            
            InText.Text = InText.Text + Buf
          
        Case 5      '/** 查看网络信号质量 **/
            ReDim Byte_y(7)
            Byte_y(0) = 65  '/** 'A' **/
            Byte_y(1) = 84  '/** 'T' **/
            Byte_y(2) = 43  '/** '+' **/
            Byte_y(3) = 67  '/** 'C' **/
            Byte_y(4) = 83  '/** 'S' **/
            Byte_y(5) = 81  '/** 'Q' **/
            Byte_y(6) = 13  '/** 回车 **/
            Byte_y(7) = 10  '/** 换行 **/
            
            MSComm1.InBufferCount = 0
            MSComm1.Output = Byte_y
            Work_Index = 6
            CSQ_DELAY_valid = CSQ_DELAY

        Case 6      '/** 查看网络信号质量 **/
            CSQ_DELAY_valid = CSQ_DELAY_valid - 1
            If CSQ_DELAY_valid = 0 Then Work_Index = 7
            
        Case 7      '/** 查看网络信号质量 **/
            NewSize = MSComm1.InBufferCount
            MSComm1.InputLen = NewSize    '/** Form_Load中MSComm1.InputLen =1,加这一条后,发6个数据读InByte()没下标越界! **/
            ReDim InTemp(NewSize)
            InByte = MSComm1.Input      '/** 读出串口缓冲区数据,读完MSComm1.InBufferCount=0,UBound(InByte) 有值 **/
            
            For i = 0 To NewSize - 1
                InTemp(i) = InByte(i)           '/** 在InByte = MSComm1.Input后,如果不及时读出InByte,其会失效! **/
            Next i
            
            For i = 0 To NewSize - 1
                Buf = Buf + Chr(InTemp(i)) + Chr(32)         '/** 在InByte = MSComm1.Input后,如果不及时读出InByte,其会失效! **/
            Next i
            
            Buf = Buf + "恭喜!测试完成。请查看网络信号正常否?再次点击开始测试按钮重新开始下台测试!"
            Command2.Visible = True
            Work_Index = 0
            Timer1.Enabled = False
            OutText.Text = " "
            OutText.Text = Buf
            InText.Text = InText.Text + Buf
        
        Case Else
            Command2.Visible = True
            Work_Index = 0
            Timer1.Enabled = False
    End Select
End Sub

⌨️ 快捷键说明

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