باسلام
من با استفاده از مودم 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 هم اینکارو انجام دادم ولی ارسال فارسی به مشکل خورد بخاطر همین گذاشتمش کنار
تکس باکس مشکلی نداره!!! هر تعداد بخای قبول میکنه
نمونه زیر رو تست کنید
من قبلا از این استفاده میکردم
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)