PDA

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



hosseini1980
دوشنبه 04 آذر 1387, 11:46 صبح
با سلام به دوستان عزیز

برنامه ای نوشتم برای ارسال و دریافت SMS کلیه دستورات نیز درست است و برنامه خطا نمی دهد فقط عمل ارسال انجام نمی شود ، همان دستورات در HyperTerminal درست کار می کنه و SMS رو ارسال می کنه ضمناً از پورت Com 1 استفاده می کنه و کلیه تعاریف مودم نیز درست است
لطفا راهنمایی کنید چون کارم خیلی گیره .

با تشکر از کلیه دوستان

linux
سه شنبه 05 آذر 1387, 15:42 عصر
با سلام به دوستان عزیز

برنامه ای نوشتم برای ارسال و دریافت SMS کلیه دستورات نیز درست است و برنامه خطا نمی دهد فقط عمل ارسال انجام نمی شود ، همان دستورات در HyperTerminal درست کار می کنه و SMS رو ارسال می کنه ضمناً از پورت Com 1 استفاده می کنه و کلیه تعاریف مودم نیز درست است
لطفا راهنمایی کنید چون کارم خیلی گیره .
با تشکر از کلیه دوستان
خطایی، پیغامی، چیزی نمیده سیستم؟

محمدامین شریفی
سه شنبه 05 آذر 1387, 17:00 عصر
میشه یکم توضیح بدی که چیکار کردی(البته اگر وقت داری)

hosseini1980
سه شنبه 05 آذر 1387, 17:03 عصر
نه خطا نمی ده کلیه پارامترها رو چک کردم و جاببه که تمام دستورات استفاده شده نیز در Hyper جواب میده

hosseini1980
سه شنبه 05 آذر 1387, 17:10 عصر
کد زیر رو تو برنامه گذاشتم


using System.IO.Ports;
string PortNameSTR = "COM1";
int BitRate = 115200;
string atCommandStr = string.Empty;
ArrayList unreadMessage = new ArrayList() ;
SerialPort comPort = new SerialPort();
public Form1()
{
InitializeComponent();
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;
}

private void sendSms()
{
if (!comPort.IsOpen)
comPort.Open();
comPort.DiscardInBuffer();
comPort.DiscardOutBuffer();
atCommandStr = "AT+CMGS=" + Char.ConvertFromUtf32(34) + phoneTXT.Text
+ Char.ConvertFromUtf32(34) + (char)13 + messageTXT.Text
+ Char.ConvertFromUtf32(26);
comPort.WriteLine(atCommandStr + (char)13);

messageTXT.Text = comPort.ReadExisting();
comPort.Close();
}

hosseini1980
پنج شنبه 07 آذر 1387, 12:09 عصر
خطایی، پیغامی، چیزی نمیده سیستم؟


دوست عزیز اگه شما کار کردید کمک کنید چون شدیدا گیرم

محمدامین شریفی
جمعه 08 آذر 1387, 04:23 صبح
من هم از این روش و روش های دیگر رفتم،پورت را باز میکرد(4 و 5) و پیام موفقیت آمیز میگرفتم ولی sms ای داده نمیشد!

MTrezaei
دوشنبه 11 آذر 1387, 14:37 عصر
1- baud rate رو کم کن 9600.
2- RTS , DTS رو فعال کن .

محمدامین شریفی
چهارشنبه 13 آذر 1387, 05:07 صبح
1- baud rate رو کم کن 9600.
2- RTS , DTS رو فعال کن .
میتونی فایل این پروژه را بزاری

ali_kolahdoozan
چهارشنبه 13 آذر 1387, 06:14 صبح
خود پروژه رو بزارید یا این بخش کار با خود SMS رو تا درستش کنیم

hosseini1980
چهارشنبه 13 آذر 1387, 18:47 عصر
1- baud rate رو کم کن 9600.
2- RTS , DTS رو فعال کن .



baud rate رو 9600 هم کردم بازم جواب نمی ده

کجا و چجوری RTS , DTS رو فعال کنم میشه راهنمایی بیشتری کنید .

hosseini1980
چهارشنبه 13 آذر 1387, 19:04 عصر
دوست عزیز من فایل پروژه رو گذاشتم لطفا راهنمایی کنید که چه کنیم

reza6384
شنبه 16 آذر 1387, 22:53 عصر
سلام دوست عزیز من برنامه شما رو چک کردم و دیدم که رشته ای که ارسال می کنید اشتباهه. الان یادم نیست که توی TextMode چجوری Sms ارسال میشد. ولی باید اول At+CMGS=10 (مثلا) رو ارسال کنید و بعدش هم با Threading.Thread.Sleep(50) منتظر بمونید تا کاراکتر < رو از پورت دریافت کنید و بعد متن پیام رو بفرستید.

من یک کد نمونه براتون میذارم البته به VB :



ComPort.Write("AT+CMGS=18" & Chr(13))
Threading.Thread.Sleep(50)
If ComPort.ReadExisting.Contains(">") Then
ComPort.Write("0031000B819021222222F20000FF04D2B23E0C")


این دستورات کلمه Reza رو به شماره
0912 222 22 22
میفرسته.
در ضمن، برای اینکه با ارسال sms و روش هاش آشنا بشید به بخش برنامه نویسی موبایل مراجعه کنید