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

📄 pdu encoder.vb

📁 输入手机短信的服务中心号码
💻 VB
📖 第 1 页 / 共 2 页
字号:
        Me.cmdReset.Size = New System.Drawing.Size(108, 28)
        Me.cmdReset.TabIndex = 10
        Me.cmdReset.Text = "&Reset To Default"
        '
        'cmdGetPDU
        '
        Me.cmdGetPDU.DialogResult = System.Windows.Forms.DialogResult.Cancel
        Me.cmdGetPDU.FlatStyle = System.Windows.Forms.FlatStyle.System
        Me.cmdGetPDU.Location = New System.Drawing.Point(352, 276)
        Me.cmdGetPDU.Name = "cmdGetPDU"
        Me.cmdGetPDU.Size = New System.Drawing.Size(112, 28)
        Me.cmdGetPDU.TabIndex = 11
        Me.cmdGetPDU.Text = "&Get PDU Code"
        '
        'stsBar
        '
        Me.stsBar.Location = New System.Drawing.Point(0, 308)
        Me.stsBar.Name = "stsBar"
        Me.stsBar.Panels.AddRange(New System.Windows.Forms.StatusBarPanel() {Me.stsBarCharCount, Me.stsPDULength})
        Me.stsBar.ShowPanels = True
        Me.stsBar.Size = New System.Drawing.Size(710, 20)
        Me.stsBar.TabIndex = 12
        '
        'stsBarCharCount
        '
        Me.stsBarCharCount.AutoSize = System.Windows.Forms.StatusBarPanelAutoSize.Spring
        Me.stsBarCharCount.Width = 594
        '
        'cmdCopyToClipboard
        '
        Me.cmdCopyToClipboard.FlatStyle = System.Windows.Forms.FlatStyle.System
        Me.cmdCopyToClipboard.Location = New System.Drawing.Point(472, 276)
        Me.cmdCopyToClipboard.Name = "cmdCopyToClipboard"
        Me.cmdCopyToClipboard.Size = New System.Drawing.Size(108, 28)
        Me.cmdCopyToClipboard.TabIndex = 13
        Me.cmdCopyToClipboard.Text = "&Copy To Clipboard"
        '
        'GroupBox5
        '
        Me.GroupBox5.Controls.Add(Me.lblEmail)
        Me.GroupBox5.Controls.Add(Me.lblMSN)
        Me.GroupBox5.Controls.Add(Me.lblBlog)
        Me.GroupBox5.Controls.Add(Me.lblHomePage)
        Me.GroupBox5.Location = New System.Drawing.Point(12, 268)
        Me.GroupBox5.Name = "GroupBox5"
        Me.GroupBox5.Size = New System.Drawing.Size(332, 36)
        Me.GroupBox5.TabIndex = 14
        Me.GroupBox5.TabStop = False
        Me.GroupBox5.Text = "Contact"
        '
        'lblEmail
        '
        Me.lblEmail.Location = New System.Drawing.Point(100, 16)
        Me.lblEmail.Name = "lblEmail"
        Me.lblEmail.Size = New System.Drawing.Size(40, 16)
        Me.lblEmail.TabIndex = 19
        Me.lblEmail.TabStop = True
        Me.lblEmail.Text = "Email"
        '
        'lblMSN
        '
        Me.lblMSN.Location = New System.Drawing.Point(252, 16)
        Me.lblMSN.Name = "lblMSN"
        Me.lblMSN.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.lblMSN.Size = New System.Drawing.Size(60, 16)
        Me.lblMSN.TabIndex = 21
        Me.lblMSN.TabStop = True
        Me.lblMSN.Text = "MSN Space"
        '
        'lblBlog
        '
        Me.lblBlog.Location = New System.Drawing.Point(164, 16)
        Me.lblBlog.Name = "lblBlog"
        Me.lblBlog.Size = New System.Drawing.Size(63, 16)
        Me.lblBlog.TabIndex = 20
        Me.lblBlog.TabStop = True
        Me.lblBlog.Text = "CSDN Blog"
        '
        'lblHomePage
        '
        Me.lblHomePage.Location = New System.Drawing.Point(20, 16)
        Me.lblHomePage.Name = "lblHomePage"
        Me.lblHomePage.Size = New System.Drawing.Size(56, 16)
        Me.lblHomePage.TabIndex = 18
        Me.lblHomePage.TabStop = True
        Me.lblHomePage.Text = "HomePage"
        '
        'cmdAbout
        '
        Me.cmdAbout.FlatStyle = System.Windows.Forms.FlatStyle.System
        Me.cmdAbout.Location = New System.Drawing.Point(592, 276)
        Me.cmdAbout.Name = "cmdAbout"
        Me.cmdAbout.Size = New System.Drawing.Size(108, 28)
        Me.cmdAbout.TabIndex = 15
        Me.cmdAbout.Text = "&About"
        '
        'frmMain
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
        Me.ClientSize = New System.Drawing.Size(710, 328)
        Me.Controls.Add(Me.cmdAbout)
        Me.Controls.Add(Me.GroupBox5)
        Me.Controls.Add(Me.cmdCopyToClipboard)
        Me.Controls.Add(Me.stsBar)
        Me.Controls.Add(Me.cmdGetPDU)
        Me.Controls.Add(Me.GroupBox4)
        Me.Controls.Add(Me.GroupBox3)
        Me.Controls.Add(Me.GroupBox2)
        Me.Controls.Add(Me.GroupBox1)
        Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
        Me.MaximizeBox = False
        Me.MinimizeBox = False
        Me.Name = "frmMain"
        Me.Opacity = 0.95
        Me.Text = "PDU Encoder (Program by Hesciong)"
        Me.GroupBox2.ResumeLayout(False)
        Me.GroupBox1.ResumeLayout(False)
        Me.GroupBox3.ResumeLayout(False)
        Me.GroupBox4.ResumeLayout(False)
        CType(Me.stsBarCharCount, System.ComponentModel.ISupportInitialize).EndInit()
        CType(Me.stsPDULength, System.ComponentModel.ISupportInitialize).EndInit()
        Me.GroupBox5.ResumeLayout(False)
        Me.ResumeLayout(False)

    End Sub

#End Region

    Private Sub txtUserData_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtUserData.TextChanged
        'Count for number of PDUs
        Dim i As Integer
        Dim Encoding As Integer '0 for English 1 for Unicode
        Encoding = cmbDataCodingScheme.SelectedIndex
        Dim Text As String = txtUserData.Text
        For i = 0 To Text.Length - 1
            If Asc(Text.Chars(i)) < 0 Then
                Encoding = 1
                Exit For
            End If
        Next

        Dim TxtLength As Integer = txtUserData.TextLength
        With stsBarCharCount
            .Text = "CharCount:" & TxtLength
            Dim Piece As Integer

            If Encoding = 0 Then
                If TxtLength <= 160 Then
                    Piece = 1
                    .Text += "/160"
                Else
                    Piece = (TxtLength \ 152) + ((TxtLength Mod 152) = 0) + 1
                    .Text += "/152"
                End If
            End If

            If Encoding = 1 Then
                If TxtLength <= 70 Then
                    Piece = 1
                    .Text += "/70"
                Else
                    Piece = (TxtLength \ 66) + ((TxtLength Mod 66) = 0) + 1
                    .Text += "/66"
                End If
            End If

            .Text += "  Split into " & Piece & " PDUs"
        End With
    End Sub

    Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Init Controls
        cmbDataCodingScheme.Items.Add(ENUM_TP_DCS.DefaultAlphabet & ":" & ENUM_TP_DCS.DefaultAlphabet.ToString)
        cmbDataCodingScheme.Items.Add(ENUM_TP_DCS.UCS2 & ":" & ENUM_TP_DCS.UCS2.ToString)
        cmbDataCodingScheme.SelectedIndex = 0

        cmbValidPeriod.Items.Add(ENUM_TP_VALID_PERIOD.Maximum & ":" & ENUM_TP_VALID_PERIOD.Maximum.ToString)
        cmbValidPeriod.Items.Add(ENUM_TP_VALID_PERIOD.OneDay & ":" & ENUM_TP_VALID_PERIOD.OneDay.ToString)
        cmbValidPeriod.Items.Add(ENUM_TP_VALID_PERIOD.OneHour & ":" & ENUM_TP_VALID_PERIOD.OneHour.ToString)
        cmbValidPeriod.Items.Add(ENUM_TP_VALID_PERIOD.OneWeek & ":" & ENUM_TP_VALID_PERIOD.OneWeek.ToString)
        cmbValidPeriod.Items.Add(ENUM_TP_VALID_PERIOD.SixHours & ":" & ENUM_TP_VALID_PERIOD.SixHours.ToString)
        cmbValidPeriod.Items.Add(ENUM_TP_VALID_PERIOD.ThreeHours & ":" & ENUM_TP_VALID_PERIOD.ThreeHours.ToString)
        cmbValidPeriod.Items.Add(ENUM_TP_VALID_PERIOD.TwelveHours & ":" & ENUM_TP_VALID_PERIOD.TwelveHours.ToString)
        cmbValidPeriod.SelectedIndex = 0

        txtMsgRef.Text = 0
    End Sub

    Private Sub cmdGetPDU_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGetPDU.Click
        'Check all the information has input.
        If txtServiceCenterNum.TextLength = 0 Then MsgBox("Please Enter Service Center Number") : Return
        If txtDestNum.TextLength = 0 Then MsgBox("Please Enter Destination Number") : Return
        If txtUserData.Text = "" Then MsgBox("Please Enter UserData") : Return

        'Get PDU Code
        PDUCodes = GetPDU(txtServiceCenterNum.Text, txtDestNum.Text, Val(cmbDataCodingScheme.Text), Val(cmbValidPeriod.Text), Val(txtMsgRef.Text), chkStatusReport.Checked, txtUserData.Text)
        'Add PDU Codes to Text
        Dim i As Integer
        stsPDULength.Text = ""
        txtPDU.Text = ""
        For i = 0 To PDUCodes.Length - 1
            txtPDU.Text += "PDU Number:" & i + 1
            txtPDU.Text += vbTab + "Length For AT:" & (PDUCodes(i).Length - Val("&H" & Mid(PDUCodes(i), 1, 2)) * 2 - 2) / 2 & vbCrLf    'Calculate PDU Length for AT command
            txtPDU.Text += PDUCodes(i) & vbCrLf
        Next
    End Sub

    Private Function GetPDU(ByVal ServiceCenterNumber As String, _
                            ByVal DestNumber As String, _
                            ByVal DataCodingScheme As ENUM_TP_DCS, _
                            ByVal ValidPeriod As ENUM_TP_VALID_PERIOD, _
                            ByVal MsgReference As Integer, _
                            ByVal StatusReport As Boolean, _
                            ByVal UserData As String) As String()
        'Check for SMS type
        Dim Type As Integer '0 for SMS;1 For ConcatenatedShortMessage
        Dim Result() As String
        SMSObject = New SMS.Encoder.SMS
        Select Case DataCodingScheme
            Case ENUM_TP_DCS.DefaultAlphabet
                If txtUserData.TextLength > 160 Then
                    SMSObject = New SMS.Encoder.ConcatenatedShortMessage
                    Type = 1
                End If
            Case ENUM_TP_DCS.UCS2
                If txtUserData.TextLength > 70 Then
                    SMSObject = New SMS.Encoder.ConcatenatedShortMessage
                    Type = 1
                End If
        End Select

        With SMSObject
            .ServiceCenterNumber = ServiceCenterNumber
            If StatusReport = 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 = DestNumber
            .TP_Data_Coding_Scheme = DataCodingScheme
            .TP_Message_Reference = CInt(txtMsgRef.Text)
            .TP_Validity_Period = ValidPeriod
            .TP_User_Data = UserData
        End With

        If Type = 0 Then
            ReDim Result(0)
            Result(0) = SMSObject.GetSMSPDUCode
        Else
            Result = SMSObject.GetEMSPDUCode            'Note here must use GetEMSPDUCode to get right PDU codes
        End If
        Return Result
    End Function

    Private Sub cmdCopyToClipboard_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCopyToClipboard.Click
        Try
            Dim Data As String, i As Integer
            For i = 0 To PDUCodes.Length - 1
                Data += PDUCodes(i) & vbCrLf
            Next
            Data = Data.Remove(Data.Length - 2, 2) 'Remove the last vbCrLf
            Clipboard.SetDataObject(Data)
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub

    Private Sub cmdReset_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdReset.Click
        txtServiceCenterNum.Text = ""
        txtDestNum.Text = ""
        cmbDataCodingScheme.SelectedIndex = 0
        cmbValidPeriod.SelectedIndex = 0
        txtMsgRef.Text = 0
        chkStatusReport.Checked = False
        txtUserData.Text = ""
    End Sub

    Private Sub cmbDataCodingScheme_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbDataCodingScheme.SelectedIndexChanged
        txtUserData_TextChanged(Nothing, Nothing)
    End Sub


    Private Sub lblHomePage_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles lblHomePage.LinkClicked
        System.Diagnostics.Process.Start("http://dream-world.nease.net")
    End Sub

    Private Sub lblEmail_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles lblEmail.LinkClicked
        System.Diagnostics.Process.Start("mailto:hesicong@mail.sc.cninfo.net")
    End Sub

    Private Sub lblBlog_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles lblBlog.LinkClicked
        System.Diagnostics.Process.Start("http://blog.csdn.net/hesicong")
    End Sub

    Private Sub lblMSN_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles lblMSN.LinkClicked
        System.Diagnostics.Process.Start("http://spaces.msn.com/members/hesicong")
    End Sub

    Private Sub cmdAbout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAbout.Click
        MsgBox("Programmed by Hesicong." & vbCrLf & "Please visit my sites and contact me!")
    End Sub
End Class

⌨️ 快捷键说明

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