📄 pdu encoder.vb
字号:
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 + -