PDA

View Full Version : کدینگ مورد نیاز برای ارسال اس ام اس فارسی؟



ab_ir_007
دوشنبه 23 مرداد 1391, 22:49 عصر
دوستان سلام
من یک برنامه ساده و کوتاه نوشتم که از طریق GSM Modem و یک سیم کارت میتونه به شماره مقصد، متن مورد نظر رو ارسال کنه.
تا اینجا همه چیز خوب کار میکنه ولی مشکل اینه که وقتی متن پیغام ارسالی رو به فارسی مینویسم، این متن روی موبایل گیرنده که البته فارسی هم ساپورت میکنه، قابل خواندن نیست (گاربل).
اساتید کسی میدونه از چه طرفندی باید استفاده کنم؟

ممنون میشم راهنمایی کنید .

ab_ir_007
سه شنبه 24 مرداد 1391, 11:12 صبح
ممکنه دوستان زودتر نظرشون رو اعلام کنن!!؟؟؟؟

ali.habibi.c@gmail.com
سه شنبه 07 شهریور 1391, 09:33 صبح
باید با کدینگ utf8 و unicode بفرستی

sub send
Dim port As New SerialPort()
port.PortName = p_strPortName
'COM1
port.BaudRate = p_uBaudRate
'9600
port.DataBits = p_uDataBits
'8
port.StopBits = StopBits.One
'1
port.Parity = Parity.None
'None
port.ReadTimeout = p_uReadTimeout
'300
port.WriteTimeout = p_uWriteTimeout
'300
port.Encoding = Encoding.GetEncoding("utf-8")
AddHandler port.DataReceived, New SerialDataReceivedEventHandler(AddressOf port_DataReceived)
port.Open()
port.DtrEnable = True
port.RtsEnable = True
Dim recievedData As String = ExecCommand(port, "AT", 300, "No phone connected")
recievedData = ExecCommand(port, "AT+CSCS=""HEX""", 300, "Failed to set message format.")
recievedData = ExecCommand(port, "AT+CSMP=17,167,0,8", 300, "Failed to set message format.")
dim PhoneNo as string="+989151609707"
dim Message as string="سلام"
Dim recievedData As String = ExecCommand(port, "AT", 300, "No phone connected")
recievedData = ExecCommand(port, "AT+CMGF=1", 300, "Failed to set message format.")
Dim command As [String] = "AT+CMGS=""" & PhoneNo & """"
recievedData = ExecCommand(port, command, 300, "Failed to accept phoneNo")

Dim uni As New UnicodeEncoding()
Dim encodedBytes As Byte() = uni.GetBytes(Message)
Dim text As String = ""
For i As Integer = 0 To encodedBytes.Length - 1 Step 2
text += String.Format("{0:X2}", encodedBytes(i + 1)) & String.Format("{0:X2}", encodedBytes(i))
Next
command = text & Char.ConvertFromUtf32(26) & vbCr
recievedData = ExecCommand(port, command, 3000, "Failed to send message")
end sub
'---------------------------------------------------------------------------
Public Function ExecCommand(ByVal port As SerialPort, ByVal command As String, ByVal responseTimeout As Integer, ByVal errorMessage As String) As String
Try

port.DiscardOutBuffer()
port.DiscardInBuffer()
receiveNow.Reset()
port.Write(command & vbCr)

Dim input As String = ReadResponse(port, responseTimeout)
If (input.Length = 0) OrElse ((Not input.EndsWith(vbCr & vbLf & "> ")) AndAlso (Not input.EndsWith(vbCr & vbLf & "OK" & vbCr & vbLf))) Then
Throw New ApplicationException("No success message was received.")
End If
Return input
Catch ex As Exception
Throw ex
End Try
End Function



امتحان کردم کار می کنه!!!

razeghaik1
سه شنبه 07 شهریور 1391, 10:03 صبح
سلام دوست عزیز.می شه کد رو واسه ما هم بزاری تا ما هم یاد بگیریم.اگه کد c# برای asp.net رو دارید لطف بفرمایید بزارید.مرسی