نمایش نتایج 1 تا 23 از 23

نام تاپیک: تبدیل متن فارسی به PDU

  1. #1

    تبدیل متن فارسی به PDU

    سلام به همه برنامه نویسان
    کسی از دوستان ابزاری برای تبدیل متن فارسی به PDU داره؟

  2. #2

  3. #3
    ممنون
    کدی با vb6 ندارین؟

  4. #4

  5. #5
    دوست عزیز
    مشغول نوشتن کدی هستم که با vb6 تبدیل متن به PDU را انجام می دهد
    آیا با زبان vb6 آشنا هستید؟
    و می توانید مرا در این خصوص یاری دهید؟
    خیییییلییییی ممممنووووووون.........

  6. #6
    من به وی بی مسلط هستم شما تا کجا جلو رفتی و میخای چکار کنی

    Farshad Nooranian


  7. #7
    این کد رو یه نگاه بندازید لطفا
    فایل های ضمیمه فایل های ضمیمه
    • نوع فایل: rar PDU.rar‏ (10.0 کیلوبایت, 207 دیدار)

  8. #8
    این تابع قبلا نوشته شده

    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 SMS1.Encoder.SMS1
    Select Case DataCodingScheme
    Case ENUM_TP_DCS.DefaultAlphabet
    If txtUserData.TextLength > 160 Then
    SMSObject = New SMS1.Encoder.ConcatenatedShortMessage
    Type = 1
    End If
    Case ENUM_TP_DCS.UCS2
    If txtUserData.TextLength > 70 Then
    SMSObject = New SMS1.Encoder.ConcatenatedShortMessage
    Type = 1
    End If
    End Select

    With SMSObject
    .ServiceCenterNumber = ServiceCenterNumber
    If StatusReport = True Then
    .TP_Status_Report_Request = SMS.SMS1.Encoder.SMS1.ENUM_TP_SRI.Request_SMS_Repo rt
    Else
    .TP_Status_Report_Request = SMS.SMS1.Encoder.SMS1.ENUM_TP_SRI.No_SMS_Report
    End If
    .TP_Destination_Address = DestNumber
    .TP_Data_Coding_Scheme = DataCodingScheme
    .TP_Message_Reference = CInt(0) 'message refrence
    .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

    Farshad Nooranian


  9. #9
    من کد شما را اصلاح کردم


    Option Explicit
    Dim i As Integer
    '
    Dim BinArray(1 To 166) As String * 8
    Dim BIN_PDU_ARRAY(166) As String * 8

    Dim PDUMessage As String

    Private Sub Command1_Click()
    'PDU Mode

    BinConverter
    ShiftBinary
    HexConverter
    txtMobil.Text = ""
    txtMobil.Text = PDUMessage

    End Sub

    Sub BinConverter()
    Dim StrTemp As String
    List1.Clear
    For i = 1 To Len(txtmessage)
    StrTemp = Get_Binary(Asc(Mid(txtmessage, i, 1)))
    BinArray(i) = Right(StrTemp, 7)
    List1.AddItem BinArray(i)
    Next i
    Label2.Caption = List1.ListCount
    End Sub

    Sub ShiftBinary()

    Dim temp1 As String * 7, temp2 As String * 7
    Dim BinChr As String * 8
    Dim Ipos, Pl As Integer

    Ipos = 1
    Pl = 1
    List2.Clear

    For i = 1 To Len(txtmessage) - 1
    If Ipos = 8 Then Ipos = 1
    If Pl Mod 8 = 0 Then Pl = Pl + 1

    temp1 = Trim(BinArray(Pl))
    If i < Len(txtmessage) - 1 Then
    temp2 = Trim(BinArray(Pl + 1))
    BinChr = Right(Trim(temp2), Ipos) & Trim(temp1)
    BIN_PDU_ARRAY(Pl) = BinChr
    List2.AddItem BIN_PDU_ARRAY(Pl)
    Pl = Pl + 1
    Ipos = Ipos + 1
    Else
    Ipos = Ipos - 1
    BinChr = Trim(Left(Trim(BinArray(Len(txtmessage))), 7 - Ipos))
    If Len(Trim(BinChr)) < 8 Then
    BinChr = String(8 - Len(Trim(BinChr)), "0") & BinChr
    End If
    BIN_PDU_ARRAY(Pl) = BinChr
    List2.AddItem BIN_PDU_ARRAY(Pl)
    End If
    Next
    Label3.Caption = List2.ListCount
    End Sub

    Sub HexConverter()

    Dim Cnt As Integer
    Dim L, R As String

    PDUMessage = ""
    For Cnt = 1 To Len(txtmessage)
    L = BinToHex(Left(Trim(BIN_PDU_ARRAY(Cnt)), 4))
    R = BinToHex(Right(Trim(BIN_PDU_ARRAY(Cnt)), 4))
    PDUMessage = PDUMessage & L & R
    Next

    End Sub

    Function BinToHex(exp As String) As String
    Select Case exp
    Case "0001": BinToHex = Hex(1)
    Case "0010": BinToHex = Hex(2)
    Case "0011": BinToHex = Hex(3)
    Case "0100": BinToHex = Hex(4)
    Case "0101": BinToHex = Hex(5)
    Case "0110": BinToHex = Hex(6)
    Case "0111": BinToHex = Hex(7)
    Case "1000": BinToHex = Hex(8)
    Case "1001": BinToHex = Hex(9)
    Case "1010": BinToHex = Hex(10)
    Case "1011": BinToHex = Hex(11)
    Case "1100": BinToHex = Hex(12)
    Case "1101": BinToHex = Hex(13)
    Case "1110": BinToHex = Hex(14)
    Case "1111": BinToHex = Hex(15)
    Case Else: BinToHex = Hex(0)
    End Select
    End Function

    Private Sub Form_Load()
    txtmessage.Text = "سلام و خسته نباشید."
    End Sub



    Farshad Nooranian


  10. #10
    دوست عزیز ممنون
    اون تابع رو قبلا دیده بودم ولی همونطور که میدونید امکان استفاده از اون کلاس خاص در vb6 وجود ندارد و حتما باید در net. از اون استفاده کرد
    کد جدید رو تست می کنم و بهتون اطلاع می دهم.

  11. #11
    دوست عزیز سلام
    همانطور که می دانید برای تبدیل متن به pdu به ازای هر 7 بایت یک بایت خالی باید رد شود و در نظر گرفته نشود ولی با کد بالا و در قسمت case else ، آن خظ خالی با 00 جایگزین می شود
    که نتیجه صحیح نخواهد بود.
    نظر شما چیست؟

  12. #12
    نقل قول نوشته شده توسط @AM!R! مشاهده تاپیک
    دوست عزیز ممنون
    اون تابع رو قبلا دیده بودم ولی همونطور که میدونید امکان استفاده از اون کلاس خاص در vb6 وجود ندارد و حتما باید در net. از اون استفاده کرد
    کد جدید رو تست می کنم و بهتون اطلاع می دهم.
    بله با دات نت نوشته شده

    Farshad Nooranian


  13. #13
    UDP چند حالت داره
    7Bit - 8bit - 16 bit cus2
    شما برای ارسال متنهای انگلیسی باید از 7 بیت استفاده کنین ولی برای ارسال متن فارسی از 16 بیت استفاده میشه

    اگه متن شما از 166 کارکتر کمتره میتونین 8بیت ارسال کنی که در این صورت نیازی به شیفت بیتها نداری

    Farshad Nooranian


  14. #14
    میشه لطفا برای پیغام "سلام" روش 16 بیت رو مثال بزنید
    البته متن کامل با SMSC و شماره مقصد و ....
    البته برای متن فارسی از 70 کاراکتر بیشتر مجاز نیست درسته؟
    من گیج شدم
    ممنون

  15. #15
    دوست عزیز
    برای ارسال متن فارسی شما باید از یونیکد فارسی استفاده کنید
    که هر حرف از دو بایت استفاده میشه مثلا کارکتر
    1 =0031
    2=0032
    برای همین بیشتر از 70 کارکتر نمیشه در یک قسمت ارسال کرد و اگه بیشتر بشه باید چند قسمتی ارسال بشه

    Farshad Nooranian


  16. #16
    ماژولی برای تبدیل وجود نداره
    vb6
    فعلا با Select case نوشتم ولی خیلی جالب نیست
    مسئله بعدی اینکه اگه بخواهیم با PDU متن انگلیسی و فارسی رو با هم بفرسیم چطور؟ بازم 70 کاراکتر

  17. #17
    بله حتی یک کلمه فارسی هم باعث میشه شما 16 بیتی دیتاهاتونو کد کنی

    Farshad Nooranian


  18. #18
    پس ماژول بهینه تری برای تبدیل غیر Select Case وجود نداره؟

  19. #19
    شما به زیر برنامه ای زیر توجه کن


    Private Function EncodeUserData(ByVal strUserData As String) As String

    Dim res As String, res2 As String, encSMS As String, lenEmNr As Long, lenSMS As Long
    Dim encRecNr As String, intNrPrefix As String
    Dim i As Long

    lenSMS = Len(strUserData)

    'Convert to 7-bit bitstream, reverse bits
    For i = 0 To Len(strUserData) - 1
    res = res + StrReverse(Bin(CLng(Asc(Mid$(strUserData, i + 1, 1))), 7))
    Next i

    'Check whether the string length can be divided by 8 without fractions.
    i = Len(res) And 7
    If i <> 0 Then
    res = res & String(8 - i, "0")
    End If

    For i = 0 To Len(res) - 1 Step 8
    res2 = StrReverse(Mid$(res, i + 1, 8))
    encSMS = encSMS & Hex(BinToDec(Left$(res2, 4))) & Hex(BinToDec(Right$(res2, 4)))
    Next i

    encSMS = Right$("00" & Hex(lenSMS), 2) & encSMS

    EncodeUserData = encSMS
    End Function





    Farshad Nooranian


  20. #20
    این همه طریقه کار



    0 6 5 4 3 2 1 0 1 0 6 5 4 3 2 1 2 1 0 6 5 4 3 2 3 2 1 0 6 5 4 3 4 3 2 1 0 6 5 4 5 4 3 2 1 0 6 5 6 5 4 3 2 1 0 6 6 5 4 3 2 1 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0


    Farshad Nooranian


  21. #21
    با تشکر از شما دوست عزیز
    برای دریافت چه پیشنهادی دارید؟
    چگونه می توان فهمید، sms دریافتی با چه مدیست؟

  22. #22
    از TP-DCS میتونی متوجه بشی

    Farshad Nooranian


  23. #23

    نقل قول: تبدیل متن فارسی به PDU

    سلام ممکنه یه تابه بگید در delphi که متن رو تبدیل به pdu کنه و برعکس؟

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •