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

📄 nokiaplugin.vb

📁 vc实现串口收发短信
💻 VB
📖 第 1 页 / 共 3 页
字号:
'//////////////////////////////////////////////////////////////////////////
'// Use at your own risk                                                 //
'// www.hesicong.net                                                     //
'// Copyright Dreamworld. You can use this program freely but no in      //
'// commerial use without my permission.                                 //
'// Authoer: hesicong                                                    //
'// Date: 2007-2-25                                                      //
'//////////////////////////////////////////////////////////////////////////

Imports Dreamworld.Mobile.PhoneControllerSDK
Imports Dreamworld.Mobile.ShortMessageService
Imports Dreamworld.Protocol.IrMC
Imports System.Text
Imports System.Text.Encoding
Imports System.Text.RegularExpressions
Imports System.Threading
Imports System.Collections
Namespace Dreamworld.Mobile
    ''' <summary>
    ''' Nokia Plugin
    ''' </summary>
    ''' <remarks>
    ''' Copyright hesicong.
    ''' All rights reserved
    ''' </remarks>
    Public Class Nokia
        Implements IPhoneController
        Dim WithEvents mATCmd As ATCommandBase
        Private mServiceCenterNumber As String
        Private mSerialStream As IO.Ports.SerialPort
        ''' <summary>
        ''' Key is index and value is LUID. Key MAX store max index.
        ''' </summary>
        ''' <remarks></remarks>
        Private mLUID As New Hashtable
        Private mPort As String
        Private mBaudrate As Integer
        'Added at 10/2/2005
        Private mCancel As Boolean = False
        Private mCancelResponse As String = String.Empty
        Private mEntiresTotal As Integer
        Private mEntiresRead As Integer
        'Private mHeartBeatThread As Threading.Thread
        Private mExitHeartBeat As Boolean = False

#Region "Interface members"
        Private currentPhonebook As PhonebookType
        Private currentCharactorSet As PhoneControllerSDK.CharactorSet
        ''' <summary>
        ''' Indicate a new message have arrived
        ''' </summary>
        ''' <param name="index">Index of the message</param>
        ''' <remarks></remarks>
        Public Event NewMessageArrived(ByVal index As Integer, ByVal content As String) Implements PhoneControllerSDK.IPhoneController.NewMessageArrived

        Private Sub NewMsgArrivialHandler(ByVal index As Integer, ByVal content As String) Handles mATCmd.NewMessageArrived
            RaiseEvent NewMessageArrived(index, content)
        End Sub

        ''' <summary>
        ''' Set new message arrive report. Using AT+CNMI
        ''' </summary>
        ''' <param name="enable">True if enable;flase if disable</param>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Function SetNewMessageArriveReport(ByVal enable As Boolean) As Boolean Implements PhoneControllerSDK.IPhoneController.SetNewMessageArriveReport
            If enable = True Then
                Return ATCommandBase.CheckResponse(mATCmd.SendCommand("AT+CNMI=1,1,0,2,1"))
            Else
                Return ATCommandBase.CheckResponse(mATCmd.SendCommand("AT+CNMI=0,0,0,0,0"))
            End If
        End Function

        ''' <summary>
        ''' Add a phonebook entry. If entry is exsist then it performs modify.
        ''' </summary>
        ''' <param name="entry"></param>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Function AddPhonebookEntry(ByVal entry As PhoneControllerSDK.PhonebookEntry) As Boolean Implements PhoneControllerSDK.IPhoneController.AddPhonebookEntry
            'Check if correct entry 
            If entry.Index = 0 Then
                Throw New Exception("You must provide a index when write to SIM card")
            End If
            'Using AT command
            Dim cmd As String = String.Empty
            Dim number As String = entry.SIMNumber
            'Find number
            Select Case currentCharactorSet
                Case CharactorSet.ASCII
                    cmd = "AT+CPBW=" & entry.Index & ",""" & number & """,129,""" & entry.Name & """"
                Case CharactorSet.UCS2
                    cmd = "AT+CPBW=" & entry.Index & ",""" & number & """,129,""" & EncodeUnicode(entry.Name) & """"
            End Select
            Return ATCommandBase.CheckResponse(mATCmd.SendCommand(cmd))
        End Function

        ''' <summary>
        ''' Connect to phone
        ''' </summary>
        ''' <param name="Port">Port name like "COM1:"</param>
        ''' <param name="baudrate">Speed of connection. Default 19200</param>
        ''' <returns>True if successed;False if failed</returns>
        ''' <remarks></remarks>
        Public Function Connect(ByVal Port As String, Optional ByVal baudrate As Integer = 19200, Optional ByVal timeOut As Integer = 20000) As Boolean Implements PhoneControllerSDK.IPhoneController.Connect
            Try
                mPort = Port
                mBaudrate = baudrate
                mSerialStream = New IO.Ports.SerialPort(Port, baudrate)
                mSerialStream.Open()
                mSerialStream.RtsEnable = True
                mSerialStream.DtrEnable = True
                mATCmd = New ATCommandBase(mSerialStream, timeOut)
                mATCmd.EnableMonitor()
                ''Start heart beat thread
                'mHeartBeatThread = New Thread(AddressOf HeartBeat)
                'mHeartBeatThread.Name = "Nokia Heart Beat Thread"
                'mHeartBeatThread.Start()
                Return True
            Catch e As Exception
                mATCmd.Close()
                Throw e
            End Try
        End Function

        Public Function Disconnect() As Boolean Implements PhoneControllerSDK.IPhoneController.Disconnect
            mExitHeartBeat = True
            'mHeartBeatThread.Abort()
            mATCmd.DisableMonitor()
            mATCmd.Close()
            Return True
        End Function

        ''' <summary>
        ''' Delete a book entry
        ''' </summary>
        ''' <param name="index">index to delete</param>
        ''' <returns>True if successed;False if failed</returns>
        ''' <remarks></remarks>
        Public Function DelPhonebookEntry(ByVal index As Integer) As Boolean Implements PhoneControllerSDK.IPhoneController.DelPhonebookEntry
            Dim response As String = mATCmd.SendCommand("AT+CPBW=" & index)
            Return ATCommandBase.CheckResponse(response)
        End Function

        ''' <summary>
        ''' Delete a SMS
        ''' </summary>
        ''' <param name="index">index to delete</param>
        ''' <returns>True if successed;False if failed</returns>
        ''' <remarks></remarks>
        Public Function DelSMS(ByVal index As Integer) As Boolean Implements PhoneControllerSDK.IPhoneController.DelSMS
            Dim response As String = mATCmd.SendCommand("AT+CMGD=" & index)
            Return ATCommandBase.CheckResponse(response)
        End Function

        ''' <summary>
        ''' Get phone battery charge
        ''' </summary>
        ''' <returns>battery charge. 100 for full</returns>
        ''' <remarks></remarks>
        Public Function GetBatteryCharge() As Integer Implements PhoneControllerSDK.IPhoneController.GetBatteryCharge
            Dim rst As String = mATCmd.SendCommand("AT+CBC")
            Dim regex As Regex = New Regex( _
        "\+CBC:\s(?<BCS>\d*),(?<BCL>\d*)", _
        RegexOptions.None _
        )
            Dim m As Match = regex.Match(rst)
            If m.Success Then
                Return CInt(m.Groups("BCL").Value)
            Else
                Throw New ApplicationException("Can't get your battery charge")
            End If
        End Function

        ''' <summary>
        ''' Get phone capability
        ''' </summary>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Function GetCapability() As PhoneControllerSDK.Capability Implements PhoneControllerSDK.IPhoneController.GetCapability
            '################################
            'Fill this block
            '################################
            Throw New NotSupportedException("Function not build here")

        End Function

        ''' <summary>
        ''' Get IMSI
        ''' </summary>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Function GetIMSI() As String Implements PhoneControllerSDK.IPhoneController.GetIMSI
            Throw New NotSupportedException("AT+CIMI not supported by this phone")

            Dim rst As String = mATCmd.SendCommand("AT+CIMI")
            Dim regex As Regex = New Regex( _
                "(?<IMSI>\d+)")
            Dim m As Match = regex.Match(rst)
            If m.Success Then
                Return m.Groups("IMSI").Value
            Else
                Throw New ApplicationException("Can't get your IMSI")
            End If
        End Function

        ''' <summary>
        ''' Get last error code
        ''' </summary>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Function GetLastError() As String Implements PhoneControllerSDK.IPhoneController.GetLastError
            Return mATCmd.LastError
        End Function

        ''' <summary>
        ''' Get manufacture ID
        ''' </summary>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Function GetManufactureID() As String Implements PhoneControllerSDK.IPhoneController.GetManufactureID
            Dim rst As String = mATCmd.SendCommand("AT+CGMI")
            Dim regex As Regex = New Regex( _
                "(?<ID>\w+)")
            Dim m As Match = regex.Match(rst)
            If m.Success Then
                Return m.Groups("ID").Value
            Else
                Throw New ApplicationException("Can't get your Manufacturer ID")
            End If
        End Function

        ''' <summary>
        ''' Get Model ID
        ''' </summary>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Function GetModelID() As String Implements PhoneControllerSDK.IPhoneController.GetModelID
            Dim rst As String = mATCmd.SendCommand("AT+CGMM")
            Dim lines As String() = rst.Replace(vbCrLf, Chr(13)).Split(New Char() {Chr(13)}, StringSplitOptions.RemoveEmptyEntries)
            Return lines(0)
        End Function

        ''' <summary>
        ''' Get own number
        ''' </summary>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Function GetOwnNumber() As String Implements PhoneControllerSDK.IPhoneController.GetOwnNumber
            Throw New NotSupportedException("Phone can't support AT+CNUM")
            Dim regex As Regex = New Regex( _
                "\+CNUM:\s""(?<NAME>\w*)"",""(?<NUM>\d*)"",(?<TYPE>\d*)", _
                RegexOptions.None _
                )
            Dim rst As String = mATCmd.SendCommand("AT+CNUM")
            Dim m As Match = regex.Match(rst)
            If m.Success Then
                Return m.Groups("NUM").Value
            Else

⌨️ 快捷键说明

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