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

📄 clsgsminfo.vb

📁 AT指令发英文短信
💻 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 + -