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

📄 t618at.vb

📁 收发SMS的VB.NET源码 
💻 VB
字号:
Option Strict On
Option Explicit On 
Imports System.Text
Imports System.Xml.Serialization
Imports System.Reflection
Imports System.IO
Imports SoilNet.MobileNETLib

Namespace MobileNETLibTest

    '封装Sony Ericcson T618专用的AT命令
    Public Class T618ATCommand
        Inherits SoilNet.MobileNETLib.ATCommand


#Region "T618Key Code Enum"
        Public Enum T618Key As Integer
            KEY_ESC = 58 ':
            KEY_FUN = 27 '

            KEY_0 = 48
            KEY_1 = KEY_0 + 1
            KEY_2 = KEY_1 + 1
            KEY_3 = KEY_2 + 1
            KEY_4 = KEY_3 + 1
            KEY_5 = KEY_4 + 1
            KEY_6 = KEY_5 + 1
            KEY_7 = KEY_6 + 1
            KEY_8 = KEY_7 + 1
            KEY_9 = KEY_8 + 1
            KEY_HASH = 35 '#
            KEY_STAR = 42 '*
            KEY_UP = 47 '^
            KEY_DOWN = 118 'V
            KEY_LEFT = 60 '<
            KEY_RIGHT = 62 '>
            KEY_VOL_UP = 117 'u
            KEY_VOL_DOWN = 100 'd
            KEY_DEL = 99 'c

            KEY_SOFT_LEFT = KEY_FUN + 60 '27+<
            KEY_SOFT_RIGHT = KEY_FUN + 62 '27+>
            KEY_JOYSTICK = KEY_ESC + 74 ':J
            KEY_CAMERA = KEY_ESC + 67 ':C
            KEY_OPERATOR = KEY_ESC + 79 ':O
            KEY_RETURN = KEY_ESC + 82 ':R
        End Enum

#End Region

#Region "Sub New"
        Sub New(ByVal iPort As Integer, ByVal iDisplay As IStatus)
            MyBase.New(iPort, iDisplay)
        End Sub
        Sub New()
            MyBase.New()
        End Sub

        Sub New(ByVal iport As Integer)
            MyBase.New(iport)
        End Sub

#End Region


#Region "Must Overrides"
        Protected Overrides Sub Init()
            'e.i. important
            '读取XML文件取手机的各种属性
            '依照手机的不同可能会有不同的命令/返回值可以自行修改
            ReDim ATCommands(12)
            Properties = New Hashtable
            PropertiesName = New ArrayList
            GetXMLCfgFromResource()
            GetALLCommandPropertiesName()
        End Sub

        Protected Overrides Sub GetALLCommandPropertiesName()
            'e.i. important
            Dim i, j As Integer
            For i = 0 To MyBase.ATCommands.Length - 1
                For j = 0 To ATCommands(i).PropertyNameArray.Length - 1
                    MyBase.PropertiesName.Add(ATCommands(i).PropertyNameArray(j))
                Next
            Next
        End Sub

        Protected Overrides Sub GetXMLCfgFromResource()
            '从嵌入资源的xml文件获取我们需要的命令列表
            'e.i. important
            Dim assembly1 As [Assembly] = [Assembly].GetExecutingAssembly
            Dim stream1 As Stream
            stream1 = assembly1.GetManifestResourceStream("T618ATCommands.xml")
            Dim sr As New XmlSerializer(ATCommands.GetType)
            MyBase.ATCommands = CType(sr.Deserialize(stream1), ATProperty())
        End Sub


#End Region

#Region "Support Listening KeyPress"
        Private m_ListeningKeyPress As Boolean

        Public Event OnKeyDown(ByVal key As T618Key)
        Public Event OnKeyUp(ByVal key As T618Key)

        '开始侦听手机返回数据
        Public Function StartListenKeyPress() As Boolean
            Dim ret As String = MyBase.GetResponse("+CMER=3,2,0,0,0")
            MyBase.WriteLog(ret)
            m_ListeningKeyPress = MyBase.cmdOK
            If MyBase.cmdOK Then
                MyBase.WriteLog("OK")
                MyBase.StartListening()
            Else
                MyBase.WriteLog("ERROR")
            End If
            Return m_ListeningKeyPress
        End Function

        '停止侦听
        Public Function StopListenKeyPress() As Boolean
            Dim ret As String = MyBase.GetResponse("+CMER=0,0,0,0,0")
            MyBase.WriteLog(ret)
            If MyBase.cmdOK Then
                m_ListeningKeyPress = False
                MyBase.StopListening()
                MyBase.WriteLog("OK")
            Else
                MyBase.WriteLog("ERROR")
            End If
            Return MyBase.cmdOK
        End Function

        '处理接收事件
        Protected Sub T618ATCommand_OnReceivedData(ByVal Data As String) Handles MyBase.OnReceivedData
            If m_ListeningKeyPress Then
                If Data.Length > 6 Then
                    RaiseKeyEvents(Data)
                End If
            End If
        End Sub

        '分析数据产生按键事件
        Protected Sub RaiseKeyEvents(ByVal d As String)
            If Not d.TrimStart.StartsWith("+CKEV:") Then Return

            Dim ss() As String = SoilNet.MobileNETLib.Utility.RegexTools.GetRegValues(d, "\+CKEV: (.*),(.*)")
            If ss Is Nothing OrElse ss.Length = 0 Then Return
            Dim s As String = ss(1)
            Dim b As T618Key = CType(Asc(s.Substring(0, 1)), T618Key)
            If s.Length = 2 AndAlso (b = T618Key.KEY_ESC OrElse b = T618Key.KEY_FUN) Then
                b = CType(Asc(s.Substring(1, 1)) + b, T618Key)
            End If
            ' Dim index As Integer = CInt(ss(2))
            Select Case ss(2)
                Case "0"
                    RaiseEvent OnKeyUp(b)
                Case "1"
                    RaiseEvent OnKeyDown(b)
            End Select
            SetStatus("就绪.")

        End Sub

#End Region

    End Class
End Namespace

⌨️ 快捷键说明

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