📄 modem.vb
字号:
Imports System.IO.Ports
Imports System.Text
Imports System.Threading
Imports System.Management
Imports ATSMS.Common
Public Class Modem : Inherits AbstractObject : Implements IDisposable
#Region "Protected Members"
' Variables
Protected iBatteryLevel As Integer
Protected iDelayAfterPIN As Integer
Protected enumEncoding As EnumEncoding
Protected lErrorCode As Long
Protected strErrorDescription As String
Protected enumFlowControl As EnumFlowControl
Protected strModemInitString As String
Protected strModel As String
Protected strManufacturer As String
Protected strRevision As String
Protected lSendDelay As Long
Protected iSendRetry As Integer
Protected iSignalStrength As Integer
Protected iSignalStrengthDB As Integer
Protected isEcho As Boolean
Protected strName As String
Protected disposed As Boolean = False
Protected strSimPin As String
Protected commandHandler As ATHandler
Protected WithEvents serialDriver As SerialDriver
#End Region
#Region "Constructor"
''' <summary>
''' Constructor
''' </summary>
''' <remarks></remarks>
Public Sub New()
serialDriver = New SerialDriver
commandHandler = New ATHandler
enumEncoding = Common.EnumEncoding.GSM_Default_7Bit
End Sub
#End Region
#Region "Dispose"
''' <summary>
''' Dispose method
''' </summary>
''' <param name="disposing"></param>
''' <remarks></remarks>
Protected Overridable Overloads Sub Dispose(ByVal disposing As Boolean)
If Not Me.disposed Then
If disposing Then
If (Not IsNothing(serialDriver)) Then
If (serialDriver.IsOpen) Then
serialDriver.Close()
serialDriver = Nothing
End If
End If
End If
' Add code here to release the unmanaged resource.
' Note that this is not thread safe.
End If
Me.disposed = True
End Sub
#End Region
#Region " IDisposable Support "
' Do not change or add Overridable to these methods.
' Put cleanup code in Dispose(ByVal disposing As Boolean).
Public Overloads Sub Dispose() Implements IDisposable.Dispose
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
Protected Overrides Sub Finalize()
Dispose(False)
MyBase.Finalize()
End Sub
#End Region
#Region "Properties"
Public Property ATCommandHandler() As ATHandler
Get
Return commandHandler
End Get
Set(ByVal value As ATHandler)
commandHandler = value
End Set
End Property
Public Property SerialDriverHandler() As SerialDriver
Get
Return serialDriver
End Get
Set(ByVal value As SerialDriver)
serialDriver = value
End Set
End Property
Public Property Echo() As Boolean
Get
Return Me.isEcho
End Get
Set(ByVal value As Boolean)
Me.isEcho = value
If IsConnected Then
If isEcho Then
serialDriver.SendCmd(ATHandler.ECHO_COMMAND)
Else
serialDriver.SendCmd(ATHandler.NO_ECHO_COMMAND)
End If
End If
End Set
End Property
Public ReadOnly Property BatteryLevel() As Integer
Get
Return Me.iBatteryLevel
End Get
End Property
Public Property BaudRate() As Integer
Get
Return serialDriver.BaudRate
End Get
Set(ByVal Value As Integer)
serialDriver.BaudRate = Value
End Set
End Property
Public Property DataBits() As Integer
Get
Return serialDriver.DataBits
End Get
Set(ByVal Value As Integer)
serialDriver.DataBits = Value
End Set
End Property
Public Property DelayAfterPIN() As Integer
Get
Return Me.iDelayAfterPIN
End Get
Set(ByVal Value As Integer)
Me.iDelayAfterPIN = Value
End Set
End Property
Public Property Encoding() As EnumEncoding
Get
Return Me.enumEncoding
End Get
Set(ByVal Value As EnumEncoding)
Me.enumEncoding = Value
End Set
End Property
Public Property ErrorCode() As Long
Get
Return Me.lErrorCode
End Get
Set(ByVal Value As Long)
Me.lErrorCode = Value
End Set
End Property
Public Property ErrorDescription() As String
Get
Return Me.strErrorDescription
End Get
Set(ByVal Value As String)
Me.strErrorDescription = Value
End Set
End Property
Public Property FlowControl() As EnumFlowControl
Get
Return serialDriver.Handshake
End Get
Set(ByVal Value As EnumFlowControl)
Me.serialDriver.Handshake = Value
End Set
End Property
Public Property StopBits() As EnumStopBits
Get
Return serialDriver.StopBits
End Get
Set(ByVal Value As EnumStopBits)
serialDriver.StopBits = Value
End Set
End Property
Public Property Port() As String
Get
Return serialDriver.PortName
End Get
Set(ByVal Value As String)
serialDriver.PortName = Value
End Set
End Property
Public Property Parity() As EnumParity
Get
Return serialDriver.Parity
End Get
Set(ByVal Value As EnumParity)
serialDriver.Parity = Value
End Set
End Property
Public Property ModemInitString() As String
Get
Return Me.strModemInitString
End Get
Set(ByVal Value As String)
Me.strModemInitString = Value
End Set
End Property
Public Property Timeout() As Integer
Get
Return serialDriver.WriteTimeout
End Get
Set(ByVal Value As Integer)
serialDriver.WriteTimeout = Value
End Set
End Property
Public Property ReadIntervalTimeout() As Integer
Get
Return serialDriver.ReadTimeout
End Get
Set(ByVal Value As Integer)
serialDriver.ReadTimeout = Value
End Set
End Property
Public ReadOnly Property IsConnected() As Boolean
Get
Return serialDriver.IsOpen
End Get
End Property
Public ReadOnly Property Manufacturer() As String
Get
If (Len(Me.strManufacturer) = 0) Then
Me.strManufacturer = GetManufacturer()
End If
Return Me.strManufacturer
End Get
End Property
Public ReadOnly Property Model() As String
Get
Return Me.strModel
End Get
End Property
Public ReadOnly Property Revision() As String
Get
If (Len(Me.strManufacturer) = 0) Then
Me.strRevision = GetRevision()
End If
Return Me.strRevision
End Get
End Property
Public Property SendDelay() As Long
Get
Return Me.lSendDelay
End Get
Set(ByVal Value As Long)
Me.lSendDelay = Value
End Set
End Property
Public Property SendRetry() As Integer
Get
Return Me.iSendRetry
End Get
Set(ByVal Value As Integer)
Me.iSendRetry = Value
End Set
End Property
Public Property DtrEnable() As Boolean
Get
Return serialDriver.DtrEnable
End Get
Set(ByVal Value As Boolean)
serialDriver.DtrEnable = Value
End Set
End Property
Public Property Handsake() As EnumHandsake
Get
Return serialDriver.Handshake
End Get
Set(ByVal Value As EnumHandsake)
serialDriver.Handshake = Value
End Set
End Property
Public ReadOnly Property SignalStrength() As Integer
Get
Return Me.iSignalStrength
End Get
End Property
Public ReadOnly Property SignalStrengthDB() As Integer
Get
Return Me.iSignalStrengthDB
End Get
End Property
Public ReadOnly Property Name() As String
Get
Return Me.strName
End Get
End Property
Public Property PIN() As String
Get
Return strSimPin
End Get
Set(ByVal value As String)
strSimPin = value.Trim
End Set
End Property
#End Region
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -