PDA

View Full Version : سوال: ارسال اس ام اس با فرمت pdu در #C



milad.ahmadi2012
جمعه 20 خرداد 1390, 13:46 عصر
سلام
لطف كنيد فرمتي كه بايد در متغيير string بريزم تا sms با mode و حالت pdu ارسال شود چگونه هست ؟
من در حالت زير جواب نگرفتم :

atCommandStr = "AT+CMGS=0681396876600811000B819063787465F50000FF01 20";// + Char.ConvertFromUtf32(26);
comPort.WriteLine(atCommandStr);
messageTXT.Text = comPort.ReadExisting();
ودر حالت زير error گرفتم :

atCommandStr = "AT+CMGS=0681396876600811000B819063787465F50000FF01 20";// + Char.ConvertFromUtf32(26);
comPort.WriteLine(atCommandStr);
messageTXT.Text = comPort.ReadExisting();

hjran abdpor
جمعه 20 خرداد 1390, 15:14 عصر
با سلام.
دوست من این تابع را نوشتم جواب داده به نظرم این روش بهتره ...............
private void sendSms()
{
if (!comPort.IsOpen)
comPort.Open();
comPort.DiscardInBuffer();
comPort.DiscardOutBuffer();
//Exam :
//AT+CMGS="09353659299"
//message text
//Ctrl+Z : Char.ConvertFromUtf32(26)
//Enter : (char)13
atCommandStr = "AT+CMGS=" + Char.ConvertFromUtf32(34) + phoneTXT.Text
+ Char.ConvertFromUtf32(34) + (char)13 + messageTXT.Text
+ Char.ConvertFromUtf32(26);
comPort.WriteLine(atCommandStr + (char)13);
//read immediately response
messageTXT.Text = comPort.ReadExisting();
comPort.Close();
}

milad.ahmadi2012
جمعه 20 خرداد 1390, 16:26 عصر
اين كه در حالت text mode هست !!!!!!!
اين رو بلد بودم ولي با توجه به عنوان اگه ديده باشيد در حالت pdu ميخوام چون ميخوام متن فارسي ارسال كنم

sg.programmer
جمعه 20 خرداد 1390, 23:42 عصر
فرمت برای ارسال اس ام اس

AT+CMGF=0<CR> AT+CMGS=<actual PDU length><CR> <encoded message><EOF> <CR> = ASCII 13 = ENTER
<EOF> = ASCII 26 = CTRL+Z




CommSetting.comm.input = string.Empty;
if (Wait(2000, 30000, 1000, "AT+CMGS=" + PduSending.ActualLength.ToString()))
if (CommSetting.comm.AllowSend == ">")
{
CommSetting.comm.AllowSend = string.Empty;
CommSetting.comm.input = string.Empty;
serialPort.Write((PduSending.ToString() + '\x001a'.ToString()));
if (Wait(30000, 30000, 1000, null))
if (CommSetting.comm.AllowSend == "OK")
{
txtOutput.Text += "\r\n Now Sent SMS u.\r\n";
if (PduSending.MessageReference == 0)
{
PduSending.MessageReference = num;
}
txtDataReceived.Text += ("Message Send successfully." + num.ToString());
txtDataReceived.Text += ("");
}
else
txtOutput.Text += "\r\n Error occurd in Sent SMS u.\r\n";
else
txtOutput.Text += "\r\n Time Out in Sent SMS u.\r\n";
}
else
txtOutput.Text += "\r\n Error occurd in Give [ > ] \r\n";
else
txtOutput.Text += "\r\n Time Out in recived [ > ].\r\n";
CommSetting.comm.AllowSend = string.Empty;
}
catch (Exception exception)
{
txtDataReceived.Text += ("Error while sending the message: " + exception.Message);
// break;
}

ompcj4u
شنبه 21 خرداد 1390, 00:06 صبح
سلام
لطفا اگه میشه یه نمونه برای دانلود قرار بدین

با تشکر

milad.ahmadi2012
شنبه 21 خرداد 1390, 06:45 صبح
به صورت زير تغييرش دادم ولي در خطي كه بعد از اعلان < كد pdu رو قرار ميدم و كاراكتر CTRL+Z رو وارود ميكنم error ميده شماره ها هم به صورت
ارسالي 0936..... و شماره دريافتي به صورت 0938...... هست و نوع محتوا آن هم به صورت 8:UCS2 مي باشد . مشكل از كجاست ؟
if (!comPort.IsOpen)
comPort.Open();
comPort.DiscardInBuffer();
comPort.DiscardOutBuffer();
atCommandStr = "AT+CMGF=0";
comPort.WriteLine(atCommandStr + (char)13);
messageTXT.Text = comPort.ReadExisting();
atCommandStr = "AT+CMGS=16";
comPort.WriteLine(atCommandStr + (char)13);
messageTXT.Text = comPort.ReadExisting();
string path;
path = "0681398647575611000B819083660786F00008FF06062A0633 062A" + (char)26;
comPort.WriteLine(path + (char)13);
messageTXT.Text = comPort.ReadExisting();
comPort.Close();

sg.programmer
یک شنبه 22 خرداد 1390, 11:25 صبح
شما باید برای ارسال اس ام اس - قیل از ارسال pud با ید مکث داشته باشید تا (کراکتر < ) اینو دریافت کنید

milad.ahmadi2012
دوشنبه 23 خرداد 1390, 07:32 صبح
خيلي ممنون
فقط بايد فرمت شماره تلفن ها چه شكلي باشه
09153584789 يا
+989153584789
تعداد ارقامي كه پيش فرض گذاشته بوديد خيلي زياد بود ؟

it.dadkhah
جمعه 25 اردیبهشت 1394, 12:42 عصر
شما باید برای ارسال اس ام اس - قیل از ارسال pud با ید مکث داشته باشید تا (کراکتر < ) اینو دریافت کنید
ممنون
ولی ظاهرا این برای متن فارسی جواب نمیده. ارورمیده

it.dadkhah
جمعه 25 اردیبهشت 1394, 12:47 عصر
فرمت برای ارسال اس ام اس

AT+CMGF=0<CR> AT+CMGS=<actual PDU length><CR> <encoded message><EOF> <CR> = ASCII 13 = ENTER
<EOF> = ASCII 26 = CTRL+Z

یه توضیحی در مورداین کد میشه بدید؟



CommSetting.comm.input = string.Empty;
if (Wait(2000, 30000, 1000, "AT+CMGS=" + PduSending.ActualLength.ToString()))
if (CommSetting.comm.AllowSend == ">")
{
CommSetting.comm.AllowSend = string.Empty;
CommSetting.comm.input = string.Empty;
serialPort.Write((PduSending.ToString() + '\x001a'.ToString()));
if (Wait(30000, 30000, 1000, null))
if (CommSetting.comm.AllowSend == "OK")
{
txtOutput.Text += "\r\n Now Sent SMS u.\r\n";
if (PduSending.MessageReference == 0)
{
PduSending.MessageReference = num;
}
txtDataReceived.Text += ("Message Send successfully." + num.ToString());
txtDataReceived.Text += ("");
}
else
txtOutput.Text += "\r\n Error occurd in Sent SMS u.\r\n";
else
txtOutput.Text += "\r\n Time Out in Sent SMS u.\r\n";
}
else
txtOutput.Text += "\r\n Error occurd in Give [ > ] \r\n";
else
txtOutput.Text += "\r\n Time Out in recived [ > ].\r\n";
CommSetting.comm.AllowSend = string.Empty;
}
catch (Exception exception)
{
txtDataReceived.Text += ("Error while sending the message: " + exception.Message);
// break;
}

یه توضیحی در مورد این کد میشه بدید؟

sg.programmer
شنبه 26 اردیبهشت 1394, 09:58 صبح
سلام
ابتدا باید بدونید که کاربرد دستور ارسال چی هست متوجه کد ها خواهید شد.

AT کامندها را سرچ کنید.

زیاد خاطرم نیست توضیج کلی میدم.
AT+CGMS برای ارسال اس ام اس می باشد که چند مدتی را برای دریافت کراکتر< منتظر شده که بر روی پورت ظاهر گردد بعد از دریاف آن متن اس ام اس ارسال شده حالا کراکتر '\x001a' که فکر کنم CTRL+Z پورت را می بندیم اگر OK را از پورت دریافت کنید یعنی اس ام اس با موفقست ارسال گردید.