📄 clsgsminfo.vb
字号:
Public Class ClsGSmInfo
Private WithEvents GSM_Rs232 As Rs232
Private oEncoder As New System.Text.ASCIIEncoding
Private oEnc As System.Text.Encoding = oEncoder.GetEncoding(1252)
Private IsDailing As Boolean = False
Private Isopencom As Boolean = False
Public Sub New()
GSM_Rs232 = New Rs232
End Sub
ReadOnly Property IsOpen() As Boolean
Get
Return Isopencom
End Get
End Property
Public Function ConnectGSM() As Boolean
'// 初始化并打开串口
If GSM_Rs232.IsOpen = True Then
GSM_Rs232.Close()
Isopencom = False
End If
GSM_Rs232.Open()
If GSM_Rs232.IsOpen = True Then
'// 串口打开后,你可以随意地控制DTR/RTS
GSM_Rs232.Dtr = True
GSM_Rs232.Rts = True
Isopencom = True
ConnectGSM = True
Do While SendATCommand("AT").Trim.ToUpper.IndexOf("OK") <> -1
Exit Do
Loop
Else
ConnectGSM = False
Isopencom = False
End If
End Function
Public Function ConnectGSM(ByVal m_Port As String, ByVal m_BaudRate As String, ByVal m_Parity As String, ByVal m_DataBit As String, ByVal m_StopBit As String) As Boolean
With GSM_Rs232
.Port = CInt(Right(m_Port, 1)) '// Uses COM1
.BaudRate = CInt(m_BaudRate) '// 波特率 57600
.DataBit = CInt(m_DataBit) '// 8 data bits
.StopBit = CInt(m_StopBit) '// 停止位 1
.Parity = CInt(m_Parity) '// 无奇偶校验
.Timeout = 500 '//超时时间500 ms
.UseXonXoff = False
End With
'// 初始化并打开串口
If GSM_Rs232.IsOpen = True Then
GSM_Rs232.Close()
Isopencom = False
End If
GSM_Rs232.Open()
If GSM_Rs232.IsOpen = True Then
'// 串口打开后,你可以随意地控制DTR/RTS
GSM_Rs232.Dtr = True
GSM_Rs232.Rts = True
Isopencom = True
ConnectGSM = True
Do While SendATCommand("AT").Trim.ToUpper.IndexOf("OK") <> -1
Exit Do
Loop
Else
ConnectGSM = False
Isopencom = False
End If
End Function
Private Function SendATCommand(ByVal At_strcmd As String) As String
Dim tempstr As String
If GSM_Rs232.IsOpen = False Then
ConnectGSM()
End If
GSM_Rs232.Write(At_strcmd + vbCrLf)
System.Threading.Thread.Sleep(100)
Application.DoEvents()
tempstr = ReadStrOnce()
If tempstr.Trim.Length = 0 Then
tempstr = ReadStrOnce()
End If
SendATCommand = Replace(tempstr, vbCrLf, "")
End Function
Private Function ReadStrOnce() As String
'************************************************************************
'* "从串口读取数据"
'*
Dim sRead As String
GSM_Rs232.Read(512)
sRead = oEnc.GetString(GSM_Rs232.InputStream(), 0, GSM_Rs232.InputStream.Length)
System.Threading.Thread.Sleep(100)
Application.DoEvents()
Return Replace(Replace(sRead, vbCrLf, ""), Chr(0), "")
'*****************************************************************************
End Function
'Public Function TestCSQ() As Int32 '测试信号
' Dim tempstr As String
' Dim tempstr1 As String
' Dim i As Int32
' If GSM_Rs232.IsOpen = False Then
' ConnectGSM()
' End If
' tempstr = SendATCommand("at+csq")
' If Trim(tempstr) <> "" Then
' tempstr1 = Replace(tempstr, vbCrLf, "")
' tempstr1 = Replace(tempstr1, " ", "")
' i = Fix(Val(tempstr1.Substring(tempstr1.IndexOf(":") + 1, 5)))
' If i > 30 Then
' Return 5
' Else
' Return Fix(i / 6)
' End If
' Else
' Return 0
' End If
'End Function
Public Function TestCMGF(ByVal cmd_str As String) As String '测试模式
Dim tempstr As String
Dim tempstr1 As String
Try
If GSM_Rs232.IsOpen = False Then
ConnectGSM()
End If
If cmd_str.Trim = "" Then
cmd_str = "AT"
End If
tempstr = SendATCommand(cmd_str)
If tempstr.Trim.Length > 0 Then
tempstr1 = Replace(tempstr, vbCrLf, "")
tempstr1 = Replace(tempstr1, " ", "")
Return tempstr1
Else
Return ""
End If
Catch ex As Exception
Return ""
End Try
End Function
Public Function SendGSMInfo(ByVal PhoneNumber As String, ByVal GSMInfo As String, ByRef ErrStr As String) As Boolean
Dim tempstr As String
Dim tempstr1 As String
Try
If GSM_Rs232.IsOpen = False Then
ConnectGSM()
End If
If GSMInfo.Length = 0 Then
Return False
End If
Dim m_qz As String
If PhoneNumber.Length > 3 Then
m_qz = PhoneNumber.Substring(0, 1)
If m_qz = "0" Then
PhoneNumber = "106" + PhoneNumber
End If
End If
GSMInfo = "Lincom" + GSMInfo
tempstr = SendATCommand("AT+CMGS=" + """" + PhoneNumber + """" + ",129" + vbCr + GSMInfo + Chr(26))
If Trim(tempstr) <> "" Then
tempstr1 = Replace(tempstr, vbCrLf, "")
ErrStr = ErrStr + tempstr1
If tempstr1.Trim.ToLower.IndexOf("error") = -1 Then
Return True
Else
Return True
End If
Else
Return False
End If
Catch ex As Exception
Return False
End Try
End Function
Public Sub reConnectGSM()
If GSM_Rs232.IsOpen = False Then
ConnectGSM()
Else
GSM_Rs232.Close()
ConnectGSM()
End If
End Sub
Public Function DisConnect() As Boolean
Dim IsClose As Boolean = False
Do While True
If GSM_Rs232.IsOpen = True Then
GSM_Rs232.Close()
End If
If GSM_Rs232.IsOpen = False Then
IsClose = True
Exit Do
Else
IsClose = False
End If
Loop
DisConnect = IsClose
End Function
Public Sub Dispose()
Me.Dispose()
DisConnect()
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -