30-12-13, 02:58 AM
السلام عليكم ورحمة الله وبركاته
المشكلة التى اواجهها هى ( عند تنفيذ اكواد USSD ) عدم إستقبالى للرد من المودم وذلك فى حالة اذا كان الرد باللغة العربية فهو يظهر لى على هيئة ارقام ؟؟ وان كانت الرسالة باللغة الإنجليزية فهى تظهر دون اى مشاكل ولكنى احتاج للتعديل عليها حيث انه يظهر بعض الاحرف التى لا افهم معناها واضطر لإزالتها
كود الإتصال وتنفيذ أوامر USSD
كود إستقبال الرد من المودم
فكيف يمكن استقبال الرسالة باللغة العربية - وكيف يمكن الاستغناء عن الجزء الذى اقوم فيه بتنسيق الرسالة بحيث اعرض الرسالة التى استقبلها كما هى سواء باللغة العربية او الانجليزية ؟
المشكلة التى اواجهها هى ( عند تنفيذ اكواد 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;
}
فكيف يمكن استقبال الرسالة باللغة العربية - وكيف يمكن الاستغناء عن الجزء الذى اقوم فيه بتنسيق الرسالة بحيث اعرض الرسالة التى استقبلها كما هى سواء باللغة العربية او الانجليزية ؟