📄 shortmessageservice.vb
字号:
'//////////////////////////////////////////////////////////////////////////
'// 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
Namespace Dreamworld.Mobile
Public Class ShortMessageService
Public Shared Function DecodeSMS(ByVal Index As Integer, ByVal PDUCode As String) As SMSRead
Dim BaseInfo As SMS.Decoder.PDUDecoder.BaseInfo
BaseInfo = SMS.Decoder.PDUDecoder.Decode(PDUCode)
Dim Rst As SMSRead
Rst.Index = Index
Rst.SrcNumber = BaseInfo.SourceNumber
Rst.DestNumber = BaseInfo.DestinationNumber
Rst.Content = BaseInfo.Text
If BaseInfo.Type = SMS.Decoder.SMSBase.SMSType.SMS_STATUS_REPORT Then
Rst.IsStatusReport = True
Select Case BaseInfo.StatusFromReport
Case SMS.Decoder.SMS_STATUS_REPORT.EnumStatus.NoResponseFromSME
Rst.StatusFromReport = StatusReportValue.NoResponseFromSME
Case SMS.Decoder.SMS_STATUS_REPORT.EnumStatus.NotSend
Rst.StatusFromReport = StatusReportValue.NotSend
Case SMS.Decoder.SMS_STATUS_REPORT.EnumStatus.Success
Rst.StatusFromReport = StatusReportValue.Success
End Select
End If
Rst.ReceivedDate = BaseInfo.ReceivedDate
Return Rst
End Function
Public Shared Function ProduceSMS(ByVal Number As String, ByVal RequireStatusReport As Boolean, ByVal validPeriod As SMSSend.TP_VALID_PERIOD, ByVal Content As String, ByVal ServiceCenterNumber As String) As String()
'Check for service center setting
If ServiceCenterNumber = String.Empty Then
Throw New Exception("Please set service center number first")
End If
'Check for SMS type
Dim Type As Integer '0 for SMS;1 For ConcatenatedShortMessage
Dim PDUCode() As String
Dim SMSObject As New SMS.Encoder.SMS
Dim EMSObject As New SMS.Encoder.ConcatenatedShortMessage
'Check for coding
Dim DataCodingScheme As SMS.Encoder.SMS.ENUM_TP_DCS
Dim i As Integer
For i = 0 To Content.Length - 1
If Asc(Content.Chars(i)) < 0 Then
DataCodingScheme = SMS.Encoder.SMS.ENUM_TP_DCS.UCS2
Exit For
End If
Next
'Check for using ConcatenatedShortMessage
Select Case DataCodingScheme
Case SMS.Encoder.SMS.ENUM_TP_DCS.DefaultAlphabet
If Content.Length > 160 Then
Type = 1
End If
Case SMS.Encoder.SMS.ENUM_TP_DCS.UCS2
If Content.Length > 70 Then
Type = 1
End If
End Select
'Produce SMS
If Type = 0 Then
With SMSObject
.ServiceCenterNumber = ServiceCenterNumber
If RequireStatusReport = True Then
.TP_Status_Report_Request = SMS.Encoder.SMS.ENUM_TP_SRI.Request_SMS_Report
Else
.TP_Status_Report_Request = SMS.Encoder.SMS.ENUM_TP_SRI.No_SMS_Report
End If
.TP_Destination_Address = Number
.TP_Data_Coding_Scheme = DataCodingScheme
.TP_Message_Reference = 0
.TP_Validity_Period = CType(validPeriod, SMS.Encoder.SMS.ENUM_TP_VALID_PERIOD)
.TP_User_Data = Content
End With
PDUCode = New String() {SMSObject.GetSMSPDUCode}
Else
With EMSObject
.ServiceCenterNumber = ServiceCenterNumber
If RequireStatusReport = True Then
.TP_Status_Report_Request = SMS.Encoder.SMS.ENUM_TP_SRI.Request_SMS_Report
Else
.TP_Status_Report_Request = SMS.Encoder.SMS.ENUM_TP_SRI.No_SMS_Report
End If
.TP_Destination_Address = Number
.TP_Data_Coding_Scheme = DataCodingScheme
.TP_Message_Reference = 0
.TP_Validity_Period = CType(validPeriod, SMS.Encoder.SMS.ENUM_TP_VALID_PERIOD)
.TP_User_Data = Content
End With
PDUCode = EMSObject.GetEMSPDUCode 'Note here must use GetEMSPDUCode to get right PDU codes
End If
Return PDUCode
End Function
End Class
End Namespace
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -