مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

kaveh.norozi

عضویت از 1394/11/30

مشکل در ارسال Sms فارسی بیش از 70 کاراکتر

  • شنبه 11 شهریور 1396
  • 09:14
تشکر میکنم

باسلام

من با استفاده از مودم GSM ارسال پیام کوتاه انجام میدم!

ارسال پیام و کاراکتر فارسی بخوبی انجام میشه ، فقط مشکل زمانیه که پیام بیش از 70 کاراکتره!

چون از Pdu استفاده میکنم پیام ارسالی منو به Hex تبدیل میکنه که خود این پیام رو به دوبرابر تبدیل میکنه که میشه 140 کاراکتر! از اونجایی که بیش از 140 کاراکتر دیگه یک Sms محسوب نمیشه پیام خطا ظاهر میشه !

با جستجو تو وب یه روش پیدا کردم که استفاده از SmartMessageFactory برای ارسال پیام های بیش از یک sms استفاده میشه ولی مشکل تو شناختن یه خطه که ظاهرا تو Dll که من اضافه کردم موجود نیست!

برنامه رو اینجوری پیاده سازی کردم:

1) اولا مودم رو نصب کردم که پورت COM5 رو بهش معرفی کردم یعنی ارتباط با پورت کام 5 برای ارسال Sms

2) Dll های مربوط به GsmCommunication  رو به پروژه اضافه کردم

3) کد های زیرو جهت ارسال sms نوشتم که برای زیر 70 کاراکتر جواب میده

  GsmCommMain comm;
            comm = new GsmCommMain("COM5", 115200, 150);
            SerialPort sp = new SerialPort();
            comm.Open();
            SmsSubmitPdu pdu;
            var Sexuser = " آقای ";
            var stdname = " سید امین موسوی ";
            var UserIDs = "0081615175";
            var PassIDs = "0081615175";
            var txtMessage1 = "دانشگاه سوره" +
                "\r\n" +
                Sexuser + stdname +
                    "\r\n" + "جهت تکمیل ثبت نام وارد";
            var txtMessage2 = "www.sibad.soore.ac.ir" +
                 "\r\n" +
             "شوید" +
              "\r\n" +
             "نام کاربر:" + UserIDs +
            "\r\n" +
            "رمز ورود:" + PassIDs;
            byte dcs = (byte)DataCodingScheme.GeneralCoding.Alpha16Bit;
            var q = "09123420138";
            string[] smslist = { txtMessage1, txtMessage2 };
            foreach (string mobno in smslist)
            {
                pdu = new SmsSubmitPdu(mobno, Convert.ToString(q), dcs);
                comm.SendMessage(pdu);
            }
            ViewBag.le1 = txtMessage1 + "|" + txtMessage1.Length;
            ViewBag.le2 = txtMessage2 + "|" + txtMessage2.Length;
            return View();

توضیح خطوط بالا:

من دوتا txtMessage قرار دادم که هر کدوم 70 کاراکتر داره و با استفاده از foreach هر دوتا پیام رو ارسال میکنم

پیام ها بصورت مجزا ارسال میشه و یکی نیست

( این خطوط برای زیر 70 کاراکتر درست عمل میکنه )

حالا برای ارسال بیش از 70 کاراکتر خطوط زیر رو طبق یافته های توی وب قرار دادم

اولا: ( طبق یافته های وب )

رفرنس های زیر و اضافه میکنیم

using GsmComm.PduConverter;
using GsmComm.GsmCommunication;
using GsmComm.Server;
using GSMS.Common;
using System.Threading;
using GsmComm.PduConverter.SmartMessaging;

دوما :

خطوط زیر برای ارسال sms :

try
            {
                byte dcs;
                dcs = DataCodingScheme.Class1_16Bit;
                // Send an SMS message
 
                OutgoingSmsPdu[] pdus;
 
               
               pdus = SmartMessageFactory.CreateConcatUnicodeTextMessage  (sms,"09120000000");
 
 
               foreach (OutgoingSmsPdu pdu in pdus)
               {
                   comm.SendMessage(pdu);
               }
                 
 
                comm.Close();
                MessageBox.Show("ok");
            }
            catch (Exception ex)
            {
                comm.Close();
                MessageBox.Show(ex.Message);
            }

مشکل من اینجاست:

اولا : تو رفرنس ها خط زیر پیام خطا داره چون نیست!!!!

using GSMS.Common;

دوما خط زیرو نمیشناسه:

pdus = SmartMessageFactory.CreateConcatUnicodeTextMessage  (sms,"09120000000");

این گزینه CreateConcatUnicodeTextMessage نیست!

راهنمایی کنید چکار کنم!!!

توضیح دیگر: با دستورات T-command هم اینکارو انجام دادم ولی ارسال فارسی به مشکل خورد بخاطر همین گذاشتمش کنار

پاسخ های این پرسش

تعداد پاسخ ها : 3 پاسخ
کاربر سایت

mvc_esmaeili

عضویت از 1395/08/22

  • شنبه 11 شهریور 1396
  • 11:33
تکس باکس حداکثر جه تعداد کاراکتر قبول میکند ؟
کاربر سایت

kaveh.norozi

عضویت از 1394/11/30

  • شنبه 11 شهریور 1396
  • 12:46

تکس باکس مشکلی نداره!!! هر تعداد بخای قبول میکنه

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 11 شهریور 1396
  • 16:43

نمونه زیر رو تست کنید

من قبلا از این استفاده میکردم

ارسال و دریافت اس ام اس با GSM Modem و ذخیره در بانک اطلاعاتی (#C)

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

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

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)