PDA

View Full Version : سوال: مشکل در ارسال sms با دستورهای AT



man4toman
یک شنبه 27 مرداد 1387, 12:49 عصر
سلام
من گوشی 6630 رو از com5 با کابل به کامپیوتر وصل کردم.
دستورات AT رو هم با کمک hyperterminal تست کردم کار میکنه.ولی نمیدونم برنامه چرا چیزی نمیفرسته و ارور میده که از طریق این پورت هیچ موبایلی کانکت نیست:

namespace WindowsFormsApplication5
{
/// <summary>
/// Important AT Command to this Program :
/// 1: AT+CPMS="SM" --- Get Information About SimCard
/// 2: AT+CGML="REC READ","REC UNREAD","ALL" --- To Read Message
/// 3: AT+CGMR=# --- To Read Message
/// 4: AT+CGMD=# --- To Delete Message
/// 5: AT+CMGS --- To Send Message
/// </summary>

public partial class SMS : Form
{
string PortNameSTR = "COM5";
int BitRate = 115200;
string atCommandStr = string.Empty;
SerialPort comPort = new SerialPort();
public SMS()
{
InitializeComponent();
//COM SETTING
comPort.PortName = PortNameSTR;
comPort.BaudRate = BitRate;
comPort.Parity = Parity.None;
comPort.StopBits = StopBits.One;
comPort.DataBits = 8;
comPort.ReadBufferSize = 10000;
comPort.ReadTimeout = 1000;
comPort.WriteBufferSize = 10000;
comPort.WriteTimeout = 10000;
comPort.RtsEnable = true;
}

//5: AT+CMGS --- To Send Message
private void sendSms()
{
if (!comPort.IsOpen)
comPort.Open();
comPort.DiscardInBuffer();

comPort.DiscardOutBuffer();
//Exam :
//AT+CMGS="09155154545"
//message text
//Ctrl+Z : Char.ConvertFromUtf32(26)
//Enter : (char)13
atCommandStr = "AT+CMGS=" + Char.ConvertFromUtf32(34) + textBox1.Text
+ Char.ConvertFromUtf32(34) + (char)13 + richTextBox1.Text
+ Char.ConvertFromUtf32(26);
comPort.WriteLine(atCommandStr + (char)13);
//read immediately response
richTextBox1.Text = comPort.ReadExisting();
comPort.Close();
}



private void button1_Click(object sender, EventArgs e)
{
sendSms();
}


}
}
در ضمن با hyperterminal هم sms ارسال نشد.

hdv212
یک شنبه 27 مرداد 1387, 14:26 عصر
دوست عزیز، ببین این مقاله میتونه کمکت کنه :
Testing Serial Application with virtual ports (http://www.codeproject.com/KB/cs/vikas_virtualports.aspx)

حامد مصافی
یک شنبه 27 مرداد 1387, 15:18 عصر
sms رو باید به فرمت PDU تبدیل کنی.
این لینک (http://www.codeproject.com/KB/cs/smspdulib.aspx) رو ببین.

man4toman
یک شنبه 27 مرداد 1387, 17:30 عصر
وقتی بخوایم مثلا با hyperterminal هم بفرستیم نیاز به تبدیل هست؟
sms بزبان انگلیسی نیاز به تبدیل داره؟

حامد مصافی
یک شنبه 27 مرداد 1387, 17:57 عصر
PDU فرمت استاندارد ذخیره سازی sms هست. در واقع پبام ها فقط در قالب بسته های PDU قابل نقل و انتقال هستند. این یک پروتکل عمومی محسوب میشه. موبایل ها و اوپراتور ها بر مبنای همین بسته بندی عمل می کنند.
شما چطور می خواهید از HyperTerminal پیام بفرستید ؟؟ آیا HyperTerminal شما به چیزی مثل Gsm modem یا mobile phone وصله ؟؟!

man4toman
یک شنبه 27 مرداد 1387, 18:29 عصر
بله به گوشی موبایل وصله.
من توی مقاله ایی که خونده بودم از طریق hyperterminal مستقیما sms با کمک گوشی ارسال میشد.
همونطور که گفتم دستورات AT رو از طریق همین روش روی گوشی تست کردم و ok گرفتم.ولی نمیتونم sms بفرستم.

حامد مصافی
یک شنبه 27 مرداد 1387, 18:59 عصر
بله میشه. اما باید ابتدا تبدیل کنید

man4toman
دوشنبه 04 شهریور 1387, 10:59 صبح
سلام دوباره

بنده دارم با کامپوننت ActiveXperts کار میکنم.تبدیل PDU رو هم خودش انجام میده.
این کامپوننت بصورت خودکار مدخل موبایل رو شناسایی میکنه اما بهیچ وجه حتی با مثال C#که همراه کامپوننت بود هم نمیتونم چیزی بفریستم.
با vb - delphi - c++ - js - cf - vb.net و... ارسال میشه اما با C# نه!!

روی این دستور ارور میده:

[AT+CNMI=?]و متن ارور هم اینه:

33151: Device used does not support the storage of SMS delivery report messagesدوستان کسی نظری نداره؟

man4toman
دوشنبه 04 شهریور 1387, 15:28 عصر
یه جایی توی انجمن گفته شده بود که باید با C# فقط از com1 یا 2 فرستاد.
کسی از دوستان میتونه توضیح بیشتر بده؟

حامد مصافی
چهارشنبه 06 شهریور 1387, 20:00 عصر
سلام

مسئله com1 يا 2 به هيچ وجه صادق نيست. آدرس پورت به محل اتصال وسيله به كامپيوتر بستگي داره. براي مثال موبايل من با USB به كامپيوترم وصل ميشه و آدرس com8 يا com9 داره و من بوسيله موبايل پيام كوتاه ارسال كردم.
گزارش رسيد پيام رو غير فعال كنيد ببينيد مشكلتون حل ميشه يا نه.