📄 test.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 + -