منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : مشكلة إستقبال رسائل باللغة العربية AT Command ؟
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته

المشكلة التى اواجهها هى ( عند تنفيذ اكواد USSD ) عدم إستقبالى للرد من المودم وذلك فى حالة اذا كان الرد باللغة العربية فهو يظهر لى على هيئة ارقام ؟؟ وان كانت الرسالة باللغة الإنجليزية فهى تظهر دون اى مشاكل ولكنى احتاج للتعديل عليها حيث انه يظهر بعض الاحرف التى لا افهم معناها واضطر لإزالتها

كود الإتصال وتنفيذ أوامر USSD

كود :
port.Close();


port.BaudRate = 921600;
port.PortName = com1.Text;
port.Parity = Parity.None;
port.DataBits = 8;
port.StopBits = StopBits.One;
port.ReadTimeout = 3000;
port.WriteTimeout = 3000;
port.DataReceived += port_DataReceived;
port.Open();

//تحويل جمله طاير
if (men.SelectedIndex == 8)
{
//*666*2*X*Y*Z#
port.Write(String.Format("AT+CUSD=1,\"{0}\"{1}", goml1.Text + mob.Text + "*" + int.Parse(val.Text) + "*" + pass1.Text + "#", Environment.NewLine));
}

//تحويل قطاعي طاير
if (men.SelectedIndex == 7)
{
//*666*2*X*Y*Z#
port.Write(String.Format("AT+CUSD=1,\"{0}\"{1}", katay1.Text + mob.Text + "*" + int.Parse(val.Text) + "*" + pass1.Text + "#", Environment.NewLine));
}

//معرفة رقم الموبايل
if (men.SelectedIndex == 4)
{
//*666*2*X*Y*Z#
port.Write(String.Format("AT+CUSD=1,\"{0}\"{1}", mob_no1.Text, Environment.NewLine));
//messag.Text = Session["msg"].ToString();

}

//معرفة تاريخ ووقت الشبكة
if (men.SelectedIndex == 3)
{
//*666*2*X*Y*Z#
port.Write(String.Format("AT+CUSD=1,\"{0}\"{1}", date11.Text, Environment.NewLine));
}
//معرفة رصيد التحويل
if (men.SelectedIndex == 6)
{
//*666*2*X*Y*Z#
port.Write(String.Format("AT+CUSD=1,\"{0}\"{1}", exch_credit1.Text + pass1.Text + "#", Environment.NewLine));
//messag.Text = Session["msg"].ToString();
}
//معرفة رصيد المكالمات
if (men.SelectedIndex == 5)
{
//*666*2*X*Y*Z#
port.Write(String.Format("AT+CUSD=1,\"{0}\"{1}", call_credit1.Text, Environment.NewLine));
//messag.Text = Session["msg"].ToString();
}
//ussd ارسال رساله
if (men.SelectedIndex ==0)
{
//*666*2*X*Y*Z#
port.Write(String.Format("AT+CUSD=1,\"{0}\"{1}", sendussd1.Text + mess.Text, Environment.NewLine));
//messag.Text = Session["msg"].ToString();
}

//اجراء مكالمة
if (men.SelectedIndex == 2)
{
//*666*2*X*Y*Z#
port.Write(String.Format("AT+CUSD=1,\"{0}\"{1}", call1.Text + mob.Text, Environment.NewLine));
//messag.Text = Session["msg"].ToString();
}


////ارسال رساله
if (men.SelectedIndex == 1)
{
try
{
if (objclsSMS.sendMsg(port, mess.Text, mob.Text))
{
//MessageBox.Show("Message has sent successfully");
lblmsg.Text = "Message has sent successfully";
}
else
{
//MessageBox.Show("Failed to send message");
lblmsg.Text = "Failed to send message";

}
}
catch (Exception)
{
throw;
}

}

كود إستقبال الرد من المودم

كود :
void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            SerialPort spL = (SerialPort)sender;
            byte[] buf = new byte[spL.BytesToRead];
            spL.Read(buf, 0, buf.Length);

            foreach (Byte b in buf)
            {
                mm += b.ToString();
            }

            var result = Encoding.UTF8.GetString(buf);//just return OK

            string x = result.Remove(0, 11);
            o = x.Remove(x.Length - 13);
           lblmsg.Text = o;
        }

فكيف يمكن استقبال الرسالة باللغة العربية - وكيف يمكن الاستغناء عن الجزء الذى اقوم فيه بتنسيق الرسالة بحيث اعرض الرسالة التى استقبلها كما هى سواء باللغة العربية او الانجليزية ؟
هل من توضيح ؟
وعليكم السلام أخوي
المشكلة يبدو أنها لها علاقة بترميز النص نفسه

هل ممكن تعمل مثال عن الخطأ اللي بيظهر في النص حتى نفهم المشكلة
السَلٱمٌ عـَلـْيگمّ-ۈرحـْمّـٌة ٱللـّہ ﯙبُرگـّاتہ
اذا سمحت اخي انا بحاجه هذا البرنامج وانا اوعدك اننا بصلح المشكله الخاصه باللغه العربيه انشا الله رسلي بالبرنامج الاصلي مع السورس كود
هذا الايميل تبعي
t772299420@gmail.com
وهذا الواتس
00967772299420

انتضرك
الأرقام التي تصلك عبارة عن النص باللغة العربية بتشفير Hex


فك التشفير و ستحصل على النص الصحيح 
موفق