PDA

View Full Version : مشکل ارسال sms با gsm modem



Mainar
دوشنبه 13 مهر 1394, 13:03 عصر
من دارم یه برنامه ارسال sms با gsm modem مینویسم.مشکلم اینه که کدهای ارسالم متن خالی رو میفرستن اما هیچ متنی رو نمیتونه ارسال کنه.و خطای 305 میده.
این متد ارسال:

public string sendMsg(SerialPort port, string PhoneNo, string Message)
{
string s = "";
bool ERROR = false;

port.WriteLine("ATE1" + "\r");

for (int i = 0; i < 100; i++)
{

System.Threading.Thread.Sleep(15); if (i == 100) ERROR = true;
}
port.WriteLine("AT" + "\r");
for (int i = 0; i < 100; i++)
{

System.Threading.Thread.Sleep(15); if (i == 100) ERROR = true;
}
port.WriteLine("AT+CNMI=?\r\n");
for (int i = 0; i < 100; i++)
{

System.Threading.Thread.Sleep(15); if (i == 100) ERROR = true;
}
port.WriteLine("AT+CMGF=1\r\n");
for (int i = 0; i < 100; i++)
{

System.Threading.Thread.Sleep(15); if (i == 100) ERROR = true;
}

port.Write("AT+CSCA=\"+9898933*******\"" + "\r\n");


for (int i = 0; i < 100; i++)
{

System.Threading.Thread.Sleep(15); if (i == 100) ERROR = true;
}

port.Write("AT+CMGS=\"+9891********\"" + "\r\n");


for (int i = 0; i < 100; i++)
{

System.Threading.Thread.Sleep(15); if (i == 100) ERROR = true;
}


port.Write(Message + (char)26 + "\r");

for (int i = 0; i < 100; i++)
{

System.Threading.Thread.Sleep(15); if (i == 100) ERROR = true;
}

//s += "\r" + port.ReadExisting();
s = port.ReadExisting();
port.Close();
return s;
}

و این هم متد تعریف port:

public SerialPort OpenPort(string p_strPortName, int p_uBaudRate, int p_uDataBits, int p_uReadTimeout, int p_uWriteTimeout)
{
receiveNow = new AutoResetEvent(false);
SerialPort port = new SerialPort();

try
{
port.PortName = p_strPortName; //COM1
port.BaudRate = p_uBaudRate; //9600
port.DataBits = p_uDataBits; //8
port.StopBits = StopBits.One; //1
port.Parity = Parity.None; //None
port.ReadTimeout = p_uReadTimeout; //300
port.WriteTimeout = p_uWriteTimeout; //300
port.Encoding = Encoding.GetEncoding("iso-8859-1");
port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
port.Open();
port.DtrEnable = true;
port.RtsEnable = true;
}
catch (Exception ex)
{
throw ex;
}
return port;
}

فقط sms خالی رو ارسال میکنه و هیچ نوشته ای حتی یک حرف رو هم نمیتونه بفرسته و خطای 305 میده.
این هم خروجی برنامه در حالتی که خطا میده:

ATE1

OK
AT

OK
AT+CNMI=?

+CNMI: (0,1,2,3),(0,1,2,3),(0,2),(0,1,2),(0,1)

OK
AT+CMGF=1

OK
AT+CSCA="+9898933*******"

OK
AT+CMGS="+98915*******"

>

+CMS ERROR: 305
ممنون میشم دوستان هر کی میدونه مشکل کجاست راهنماییم کنه

Mainar
شنبه 18 مهر 1394, 09:12 صبح
تو رو خدا یکی بگه مشکل کجاست که sms هام نمیره:گریه::گریه:

محمد رضا فاتحی
شنبه 18 مهر 1394, 10:58 صبح
شما نمی تونید از کامپوننت استفاده کنید؟؟

Mainar
یک شنبه 19 مهر 1394, 10:16 صبح
ترجیح میدم بدون استفاده از کامپوننت بنویسم.لطفا تو همین متد ارسال خودم بهم بگید مشکل کجاست

Mainar
چهارشنبه 22 مهر 1394, 11:57 صبح
یعنی واقعا هیشکی نمیدونه مشکل این کد چیه؟تو رو خدا یکی راهنماییم کنه بدجور گرفتار این کد و خطاش شدم:گریه::عصبانی++::گریه:

abdullah20
چهارشنبه 22 مهر 1394, 13:43 عصر
شما کاری به این کدها نداشته باشید
اول بیاید همون چند خط کد اصلی برای ارسال را بنویسید و به یک شماره پیامک کنید ببینید مشکلی نداره
مثلا مشکل از مودم نیست و از دستورات AT Command پشتیبانی میکنه

Mainar
سه شنبه 28 مهر 1394, 16:38 عصر
فقط پیام خالی رو ارسال میکنه.با نرم افزار خود gsm modem همه جور پیامی رو میفرسته,یه نسخه دمو از یه نرم افزار دیگه هم از همین سایت گرفتم,تونست ارسال کنه همه جور پیامکی رو,ولی با کدهای at command نمیشه و فقط پیام خالی(یعنی هیچ کاراکتری نباشه) رو ارسال میکنه.

Mainar
چهارشنبه 29 مهر 1394, 10:04 صبح
کمک:گریه::گریه::گریه::گریه::گ یه::عصبانی++::عصبانی++::عصبان ++:

am_al_59
چهارشنبه 29 مهر 1394, 19:03 عصر
شما این قسمت از کدتو


port.PortName = p_strPortName; //COM1
port.BaudRate = p_uBaudRate; //9600
port.DataBits = p_uDataBits; //8
port.StopBits = StopBits.One; //1
port.Parity = Parity.None; //None
port.ReadTimeout = p_uReadTimeout; //300
port.WriteTimeout = p_uWriteTimeout; //300
port.Encoding = Encoding.GetEncoding("iso-8859-1");
port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
port.Open();
port.DtrEnable = true;
port.RtsEnable = true;


این شکلی کن

port.PortName = p_strPortName; //COM1
port.BaudRate = p_uBaudRate; //9600
port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
port.Open();

با متن انگلیسی تست کن
اون قسمت baudrate رو هم مطمئنی معمولاً 14400 هست
اگر حل نشد
مودمت دفترچه راهنما یا فایل مستنداتی چیزی داره ؟ اگر هست اونو بزار
سعی کن با hyperterminal هم چک کنی روی ویندوز xp بود اما بعدش حذف شد بگردی توی اینترنت لینک جدا برای دانلود هست

Mainar
دوشنبه 04 آبان 1394, 08:36 صبح
کدها رو اونجوری که گفتین تغییر دادم اما متاسفانه درست نشد.:افسرده:
از مودم هم فایلی ندارم:ناراحت:
نمیدونم ارتباطی داره یا نه اما ویندوزم xp نیست.وینوز سون

Mainar
دوشنبه 04 آبان 1394, 13:36 عصر
?هیشکی نظری نداره

Mainar
سه شنبه 05 آبان 1394, 14:34 عصر
:گریه::گریه::گریه::گریه::گریه: