سلام من دارم با دستورات at command پیام فارسی می فرستم با سی شارپ ولی با فارسی مشکل دارم اگه می شه کمکم کنین یک سورس آماده اگه داشتین بدین ممنون می شم
Printable View
سلام من دارم با دستورات at command پیام فارسی می فرستم با سی شارپ ولی با فارسی مشکل دارم اگه می شه کمکم کنین یک سورس آماده اگه داشتین بدین ممنون می شم
این عکس ها را چرا من نمی بینم
سلام دوستان
من این pdu را دارم.(همون مثال پستهای اول)
حالا چطوری بفرستمش برای مودم؟
با این دستور؟؟؟؟
serialPort1.WriteLine("079189390500410011000B81905 3214365F70000FF");
سلام
در پست شماره 10 یک مثال گذاشتین من با استفاده از اون میخوام یک پیام خالی بفرستم ولی Error میده !
شماره مقصد 09364191752
وشماره مرکز پیام با اون مثال یکی هست
OK
at+cmgf=0
OK
at+csms=0
+CSMS: 1,1,1
OK
at+cmgs=23
> 078189390500410011000b819063141957f20000ff
ERROR
لطفا راهنماییم کنید که کجای کارم اشتباه هست ؟
متشکرم
سلام به همگی
خیلی تاپیک به درد بخوری بود..
فقط من چند جاش مشکل دارم..
1- بعد از CMGS باید چی بزنیم؟ آخر رشته PDU هم باید طول پیام رو بنویسیم؟ طول پیام شامل هدر هم می شه؟ من می خوام پیام خالی بفرستم باید مقادیری که گفتم رو چی بذارم؟
2- توی vb.net می خوام جواب هر دستور at رو بخونم که اگه ok بود ادامه بده، ولی نمی تونم این کار رو کنم. وقتی readexisting رو صدا می زنم فقط دستورات خودم رو می بینم نه جواب ها رو.
مشکل حل شد :دی
فقط یه سوال از vb.net کار ها، من تو hyper اس ام اس می فرستم ولی با همون کد توی vb.net نمی تونم ارسال کنم، دلیلش چیه؟
یه جا خونده بودم Encode سریال پورتم باید ست بشه ولی پیداش نمی کنم :ناراحت:
برای این تاپیک واقعا زحمت زیادی کشیدن و برای من هم خیلی مفید بود، اصول رو با حوصله و دقت خوبی شرح دادن...
با این حال بعد از چند روز کلنجار رفتن با مسیج های فارسی چند پارتی، و البته دریافت مسیج هایی به زبان چینی و کره ای !! نهایتا مجبور شدم پورت مودم جی اس ام خودمو در حالتی که با نرم افزار ساخت شرکت خودش کار میکرد مانیتور کنم و ببینم واقعا چه کدها و اطلاعاتی میفرسته
بخشی از این کدها رو میذارم که ببینیم روشها و داده ها میتونن شکل های دیگه ای هم داشته باشن:
Length 12: AT+CMGS=153.
Length 320: 0691891901500041FF0B81MyPhon1234 0008 8C 050003 02 04 01 062806310627064A00200627064A064606A906470020064A06 A9002006450633064A062C002006280627002006860646062F 064A06460020067E06270631062A064A0020062F0631063306 2A0020064106310633062A0627062F06470020062806340647 002006280627064A062F002006450635064A0628062A002006 32064A0627062F064A
Length 12: AT+CMGS=153.
Length 320: 0691891901500041FF0B81MyPhon1234 0008 8C 050003 02 04 02 002006A90634064A062F060C00200645062B06440627002006 280627064A062F002006280647002006280633062A06470020 06470627064A0020003600360020062A0627064A064A002006 2A06420633064A06450634002006A90631062F002006480020 06280639062F0020062706480646002006280633062A064700 200647062700200631
Length 12: AT+CMGS=153.
Length 320: 0691891901500041FF0B81MyPhon1234 0008 8C 050003 02 04 03 0648002006340645062706310647002006AF06300627063106 4A002006A90631062F00200648002006280627002006340645 062706310647002006A906440020067E064A06270645064706 270020064106310633062A0627062F0020062706440628062A 06470020062E064A0644064A0020062F064606AF0020064800 200641064606AF0020
Length 11: AT+CMGS=75.
Length 164: 0691891901500041FF0B81MyPhon1234 0008 3E 050003 02 04 04 062F0627063106470020064800200627064A06460020064A06 4700200628062E0634002006A906480686064A06A906340020 06280648062F
اگر پیامک فارسی ما تا 70 کاراکتر باشه اون رو در یک پیامک میفرسته، اما اگر از 70 تا بیشتر شد اونوقت میاد 66 تا 66 تا جدا میکنه و میفرسته. دلیلش هم همون چیزیه که دوستان گفتن، بحث همون بایتهای اضافی.
ثانیا کدها و مقدار ثابت رو چیزهای دیگه ای در نظر گرفته.
من فقط به جای شماره ی خودم نوشتم MyPhon1234 که یهو هوس نکنین برای من مسیج انبوه بفرستین!
باز هم از دو سه نفری که برای این تاپیک اینقدر وقت گذاشتن به سهم خودم تشکر میکنم...
موفق باشید
یه سوال دیگه هم داشتم. اونطور که فهمیدم ارسال اس ام اس با نام به جای شماره تلفن EMS محسوب می شود. تعرفه EmS با SmS متفاوته؟
قبل از کدی که گذاشتید این کد ها رو هم باید بنویسید:
SerialPort1.WriteLine("AT&F" & vbCrLf)
SerialPort1.WriteLine("AT" & vbCrLf)
SerialPort1.WriteLine("AT+CMGF=0" & vbCrLf)
SerialPort1.WriteLine("AT+CMGS=" & Chr(26))
که جلوی cmgs باید طول دستوراتتون رو بنویسید که از بعد از شماره ی مرکز پیام شروع می شه(حواستون باشه که هر 2 تا عدد رو یکی حساب کنید)
البته کد شما به 2 تا صفر آخرش نیاز داره که طول متن پیامتون هست
با سلام خدمت تمامي دوستان عزيز
واقعا عالي بود
خدا خيرتون بده
دستتون درد نكنه
با سلام و عرض خدا قوت به همه و قبولی طاعات و عبادات همگی،
گفتم برا بعضی ها که مثل من از ویندوز 7 استفاده می کنند و به Hyper Terminal برای تست کدها احتیاج دارن، این نرم افزار رو بذارم. روش استفاده اون تو ویندوز 7 یا ویستا این جوریه که فایل رو که دانلود کنید سپس Extract می کنید بعد محتویات پوشه رو یعنی:
- hypertrm.chm
- hypertrm.dll
- hypertrm.exe
- hypertrm.hlp
یه جایی مثل C:\Program Files (x86)\HyperTerminal قرار بدید. بعد یه Shortcut از فایل اجراییش تهیه و در Desktop قرار بدین.
به همین راحتی می تونید At Command های موبایل رو توش تست کنید.
خسته نباشید
فرق بین status Report و Delivery Report چیه
بعد از فرستان پیام یه متنی میاد که می گه مثلا +GSM=0 این چیه ممنون می شم .
چطور باید هر وقت که بخوام وضعیت پیام رو چک کنم
سلام
در mcorlib یک Even برای delivery اس ام اس ارسالی وجود دارد که message refrence,time را برمی گرداند.از چه دستور At Command میشه استفاده کرد. که بشه فهمید اس ام اس ارسالی به شماره ارسالی رسید یا نه ؟
با سلام خدمت دوست عزيزم، اين دو تا که شما گفتيد در اصل يکي هستند و فرقي با هم ندارند.
Delivery Report : زماني که شما مي خواهيد پيامک بفرستيد تنظيم ميشه. يعني تو پيامي که ميفرستين مشخص مي کنيد که آيا تاييد ارسال داشته باشيد يا خير.
Status Report : زماني که شما پيامي فرستاديد و تو اون گفتيد تاييد بشه که به طرف مقابل رسيده، اپراتور يک گزارش وضعيت به شما ميده که آيا رسيده يا نه، اگه رسيده تاريخ و زمانش کي بوده.
پس درنتيجه اولي رو شما تنظيم ميکنيد و دومي اپراتور براساس تنظيم شما ميفرسته. که در حقيقت به يک چيز ختم ميشه اونم گزارش ارسال.
اين که بعد از ارسال پيام مياد:
+CMGS: <mr>
Parameter:
GSM 03.40 TP-Message-Reference in integer format
(Message reference value is returned to the TE on successful message delivery.
Values can be used to identify message upon unsolicited delivery status report result code.)
به اين چيزا ميگن کد هاي نا خواسته که اگه متن بالا رو ترجمه کني ميشه:
"اين مقدارير براي شناسايي وضعيت تحويل گزارش از روي کدهاي ناخواسته مي تواند مورد استفاده قرار گيرد."
يعني وقتي پيامي ارسال ميکنيد مودم مياد يک شماره بهتون ميده که بفهميد اولا پيام ارسال شده، دوما اگه با اين پيام که فرستادي کار داشتي مي توني تو دنبالش بگردي که يک شماره است و جايي که ذخيره شده رو نشون ميده. شما هروقت بخواي بايد بري از دستور زير استفاده کني:
AT+CMGR=<index>[,<mode>]
که بجاي Index بايد همون شماره اي رو بدي که وقتي پيام ارسال شده و مودم به شما داده:
+CMGS: 246
متاسفانه هر وقت فرمان خواندن رو می زنم error می نویسه
چکار باید بکنم ورژن GSM 7.9 هست .
همون دستورات AT+CMGR
دستور نوشتن AT+CMGW
اررو می دن چکار باید بکنم
سلام،
شما بیا ابتدا دستور زیر را تست کن :
AT
OK
اگه جواب OK رو گرفتی پس مشخصه مودم درست متصل شده و شما الان به اون Connect هستید. حالا برای تست دستورات می تونید این کار رو انجام بدید:
Test Command
AT+CMGR=?
Response
OK
اگه جواب بازم OK بود معلوم میشه مودم این دستورات رو پشتیبانی می کنه. بعد برای خوندن پیام ها باید از این دستور با همین فرمت استفاده کنید:
Write Command
AT+CMGR=<index>[,<mode>]
Parameters
<index> integer type; value in the range of location numbers supported by the associated memory
<mode> 0 normal
1 not change status of the specified SMS record
همین جا بگم، وقتی پیامی دریافت می کنید مثل کد زیر میاد که میگه یه پیام جدید اومده و در سیم کارت در جایگاه 11 قرار داره:
+CMTI: "SM",11
وقتی می خواین این پیام جدید رو بخونید باید این دستور را بکار ببرید و جوابش هم به صورت زیر است:
AT+CMGR=11
+CMGR: 1,,159
06918919015000400C91891915******0008117042022072818C0500038005010627064506310648
0632002006280631062706CC002006340647062F0627002006 480642062A00200646062F06270631
06CC06450020060C0020062706320020063906340642002006 4506AF064800200642063506470020
06A90647002006450627002006480642062A00200646062F06 27063106CC06450020060C00200628
06270020062D
OK
بجای قسمتی از شماره تلفن * گذاشتم. ترجمه این پیام که البته یک پیام چند قسمتی است این میشه:
From:98915******* Time:2011/07/24 08:02:27 ب.ظ GMT+4.5
Total: 5 Part: 1
امروز برای شهدا وقت نداریم ، از عشق مگو قصه که ما وقت نداریم ، با ح
وقتی هم که پیامی ارسال می کنید:نقل قول:
متن کامل پیام اینه:
امروز برای شهدا وقت نداریم ، از عشق مگو قصه که ما وقت نداریم ، با حضرت شیطان سرمان گرم گناه است ، از بهر ملاقات خدا وقت نداریم ، در کوفه تن غیرتمان گوشه نشین است ، بهر سفر کرب وبلا وقت نداریم ، هر چند که خوب است شهیدانه بمیریم ، زیباست ولی حیف که ما وقت نداریم!الهم عجل الولیک الفرج
AT+CMGS=32
>0691891901500031840B81905*******F50008FF12063306440627064500200645062D0645062F<ctl+z >
+CMGS: 38
OK
+CDS: 25
0691891901500006260B81905*******F5118010419433811180104194838100
این عدد 26 که در مبنای HEX است رو اگه تبدیل به دسیمال کنی میشه همون 38 که بالا دیدیم. یعنی اگه پیامی ارسال شد یک کد(38) میده، که وقتی گزارش تایید ارسال اومد بفهمیم مال کدوم پیام بوده. که ترجمه کد بالا میشه این:
SMS_STATUS_REPORT
Phone Number:0915*******
Send time:2011/08/01 02:49:33 PM
Receive time:2011/08/01 02:49:38 PM
Status: Success
برای فهمیدن اینکه پیام رسیده یا نه شما لازم نیست دستوری بنویسید. بلکه خود اپراتور میگه که کی رسیده!
شما برای اینکه بتونی جواب اپراتور رو بگیری باید یک سری تنظیمات رو مودم انجام بدی:
- ابتدا باید تو پیامی که میفرستی مشخص کنی که می خوای تایید ارسال رو بگیری.
- سپس باید برای گرفتن این تایید پارامترهای دستور زیر رو تنظیم کنی:
Test Command
AT+CNMI=?
Response
+CNMI: (list of supported <mode>s),(list of supported <mt>s),(list of
supported <bm>s),(list of supported <ds>s),(list of supported <bfr>s)
OK
AT+CMNI=3,1,0,2,0
که اگه این جوری باشه، جواب به شکل زیر میاد:
+CDSI: "SR",54
که یعنی باید اول بیای حافظه رو از SM به SR تغییر بدی :
AT+CPMS="SR"
دوم اینکه با دستور زیر بیای تو حافظه 54 رو بخونی ببینی چیه:
AT+CMGR=55
یادتون باشه بعد از این کار حافظه رو که تغییر دادین به حالت قبل برگردونین تا اگه پیام اومد بتونین اون رو بخونید.
و حالا اگه این جوری پارامترها رو تغییر بدین:
AT+CNMI=1,2,0,1,0
جواب به شکل زیر میاد:
+CDS: 25
06918919015000062A0B81************1180105171318111 80105171538100
که دیگه لازم نیست کاری بکنید فقط کافیه این کد PDU رو تفسیر کنید.(ستاره ها نمایانگر شماره تلفن است).
- سپس وقتی داری پورت COM رو اسکن میکنی هرقت به کدی دریافت میکنی باید ایون رو تفسیر کنی که چیه اگه گزارش تایید ارسال بود بعد بری یه رویدادی رو فراخوانی کنی و بگی پیام رسید.
تذکر: لازمه بگم تمام این چیزهایی که گفتم تو حالت PDU است. البته فرقی با حالت Text نداره ولی یک تبدیل PDU میفته گردن خودتون.
روزه، نمازهاتون مقبول درگاه حق
متاسفانه AT+CMGR=?
error می ده.
توی دستور AT+CNMI=3,1
ما توی قسمت اول یعنی mode فقط 0و1و2 داریم . چطور شما 3 رو آوردید.
این SR چیه
من توی فرمان ها فقط MT,ME,SM رو دیدم
سلام،
همین جور شلاقی سوال کردی!
آیا شما در جواب دستور AT جوابی که میگیرین OK است یا Error ؟
اگه OK باشه پس نتیجتا این جوری برداشت میشه که وسیله ای که شما دارین از این دستور پشتیبانی نمیکنه!!! ولی اگه Error باشه یعنی شما به مودم متصل نیستید.
اینکه مودم شما چیرو پشتیبانی می کنه به خودش مربوطه!!!
مگه من گفتم حتما اونی که من نوشتم وحی منزله!!!!
مودمی که من دارم DWM-152 است و مثل اینکه شما گفتین حالت 3 نداره و دارم از روش دومی که گفتم استفاده می کنم. البته اینم بگم تو نرم افزارم اومدم حالتهای مختلف رو دیدم، از بهترین تا بدترین، به ترتیب هر کدوم جواب داد از اون استفاده می کنم.
AT+CPMS="SR"
این دستور هم مثل نقل بالا است. تو بعضی از مودم ها این رو داره.SR به معنی Status Report است.
یعنی گزارش وضعیت تو بعضی مودم ها رو می تونید این جوری بخونید. اگه حالت 3 تو مودمی نباشه قاعدتا این رو هم نداره پس بهتره از حالت دوم استفاده کنید و پارامترها رو این جوری تنظیم کنید:
AT+CNMI=1,2,0,1,0
جوابش فقط رو هوا میاد، اگه وقتی اومد نتونستی بگیری از دست میره و دیگه هیچ!!! بدی کار همینه.
یک مدل مودم دیلینک هست، DWM-156 :
AT+CMNI=3,1,0,2,0
AT+CPMS="SR"
این چیزایی که گفتم رو پشتیبانی میکنه. در ضمن در مورد دستور:
AT+CUSD=1,"*140*11#",15
که برای گرفتن شارژ است رو به چه زیبایی براتون جواب میده. اگه کسی خواست مودم بخره این مدل را انتخاب کنه بهتره.
یا حق
AT رو ok می ده SMS هم می فرستم ولی نمی دونم چرا
AT+CMGR رو Error می ده
یک دنیا تشکر و قدردانی فراوان و ممنون از اینکه وقت گذاشتین :تشویق::تشویق::تشویق::تشویق:
یه سوال دیگه .ببخشید انیقدر سوال می کنم
می خوام توی یه 2 تا thread ( همزمانی ) دو تا SMS بفرستم
اینکار امکان پذیر هست یا باید یکی یکی بفرستم نمی شه چند تا بطور همزمان بفرستم
من می خوام چند تا رو بفرستم باید یکی بفرستم منتظر بمونم تا جوابش بیاد بعد یکی دیگه بفرستم .
2 - این سایت های فرستادن sMS چطور اینقدر سریع SMS ها رو می فرستند .مثل payamsms
سلام،
آیا از مودم ارسال می کنید یا موبایل؟ میشه مدل وسیله ای که باهاش کار می کنید رو بدونم؟
در ضمن یک دستور دیگه است که تقریبا همین کار رو انجام میده، لطفا این دستور رو امتحان کن ببین چطوریه:
AT+CMGL=? LIST SMS MESSAGES FROM PREFERRED STORE
این کار خوبه از نظر تئوری خوبه، یعنی وقتی فکر میکنی می بینی چقدر عالیه! دیگه لازم نیست اینقدر منتظر باشیم تا یکی ارسال بشه بعد یکی دیگه بفرستیم!
من یک سوال میپرسم شما جواب بده.
سوال : اگه شما یک ماشین داشته باشین، در آن واحد چند نفر می تونن پشت فرمون باشن؟بزارید جواب رو خودم بدم:
جواب: منطقیه فقط یکی تا بتونید اون کارایی رو از ماشین داشته باشید. مودم هم همینه، یعنی وقتی دارید با کسی تماس میگیرید آیا میشه همزمان با یکی دیگه تماس بگیرید.(یعنی زمانی که داره شماره میگیره!)کامپوتر با این همه عظمتش در آن واحد یک کار بیشتر نمی تونه بکنه!!!!! از این پورت COM چه توقعی دارید. این که تازه زیر مجموعه CPU است.
بعدشم وقتی با یک threadکار میکنید مدیریتش هم راحتره یعنی بعضی وقتها میشه آنتن میپره، مودم یک دفعه قطع میشه، اگه سیم کارت اعتباری باشه شارژ تموم کنه،.... و هزار اما و شاید.
پس بهتره زیاد بفکر راههای خیلی خوب نباشین. چون بعضی وقت ها همین راههای خوب هم واقعا خیلی خوب هستن.
این سایتها میان از امکانات مخابرات استفاده میکنند نه مودم های معمولی و یا موبایل!!
چطور میشه یک شب عید نوروز مخابرات اعلام میکنه در دقیقه اول سال تحویل بیش از چند 10 میلیون پیام رو جابجا کرده!!!
سلام،
این PDU رو تست کنید. البته بگم بجای شماره تلفن که 0915123456 است شماره مورد نظر را بنویسید.
PDU Number:1 Length For AT:153
0691891901500051000B819051214365F70008FF8B060804B4 9F050106270645063106480632002006280631062706CC0020 06340647062F0627002006480642062A00200646062F062706 3106CC06450020060C00200627063200200639063406420020 064506AF06480020064206350647002006A906470020064506 27002006480642062A00200646062F0627063106CC06450020 060C0020062806270020
PDU Number:2 Length For AT:153
0691891901500051000B819051214365F70008FF8B060804B4 9F0502062D06360631062A0020063406CC0637062706460020 06330631064506270646002006AF06310645002006AF064606 270647002006270633062A0020060C00200627063200200628 06470631002006450644062706420627062A0020062E062F06 27002006480642062A00200646062F0627063106CC06450020 060C0020062F06310020
PDU Number:3 Length For AT:153
0691891901500051000B819051214365F70008FF8B060804B4 9F050306A90648064106470020062A06460020063A06CC0631 062A064506270646002006AF06480634064700200646063406 CC0646002006270633062A0020060C00200628064706310020 063306410631002006A9063106280020064806280644062700 2006480642062A00200646062F0627063106CC06450020060C 00200647063100200686
PDU Number:4 Length For AT:153
0691891901500051000B819051214365F70008FF8B060804B4 9F05040646062F002006A906470020062E0648062800200627 0633062A00200634064706CC062F0627064606470020062806 4506CC063106CC06450020060C0020063206CC062806270633 062A00200648064406CC0020062D06CC0641002006A9064700 2006450627002006480642062A00200646062F0627063106CC 06450021062706440647
PDU Number:5 Length For AT:57
0691891901500051000B819051214365F70008FF2B060804B4 9F0505064500200639062C06440020062706440648064406CC 06A900200627064406410631062C
اگه کامپوننت ATSMS رو دانلود کنید همین که من دادم رو بهتون میده. به نظر من یک کامپوننت کامله
اینم لینکش: ارسال SMS به وسیله گوشی....مودم.....اینترنت
***************
وقتی دستور atcommand زیر را اجرا می کنم پیغام خطایی نمی گیرم از طرفی اس ام اس هم دریافت نمی کنم به نظر شما اشکال از کجا می تونه باشه؟
SerialPort1.WriteLine("AT&F" & vbCrLf)
SerialPort1.WriteLine("AT" & vbCrLf)
SerialPort1.WriteLine("AT+CPMS=""MT"",""MT"",""MT" "" & vbCrLf)
M = M + SerialPort1.ReadExisting
M = M + SerialPort1.ReadExisting
SerialPort1.WriteLine("AT+CMGS=153" & vbCr)
SerialPort1.WriteLine("0691891901500051000B81***** *****F70008FF8B060804B49F0501062706450631064806320 02006280631062706CC002006340647062F062700200648064 2062A00200646062F0627063106CC06450020060C002006270 63200200639063406420020064506AF0648002006420635064 7002006A90647002006450627002006480642062A002006460 62F0627063106CC06450020060C0020062806270020" & vbCrLf & Chr(26))
System.Threading.Thread.Sleep(10000)
M = M + SerialPort1.ReadExisting
SerialPort1.WriteLine("AT+CMGS=153" & vbCr)
SerialPort1.WriteLine("0691891901500051000B81***** *****F70008FF8B060804B49F0502062D06360631062A00200 63406CC063706270646002006330631064506270646002006A F06310645002006AF064606270647002006270633062A00200 60C00200627063200200628064706310020064506440627064 20627062A0020062E062F0627002006480642062A002006460 62F0627063106CC06450020060C0020062F06310020" & vbCrLf & Chr(26))
System.Threading.Thread.Sleep(10000)
M = M + SerialPort1.ReadExisting
SerialPort1.WriteLine("AT+CMGS=153" & vbCr)
SerialPort1.WriteLine("0691891901500051000B81***** *****F70008FF8B060804B49F050306A906480641064700200 62A06460020063A06CC0631062A064506270646002006AF064 80634064700200646063406CC0646002006270633062A00200 60C00200628064706310020063306410631002006A90631062 800200648062806440627002006480642062A00200646062F0 627063106CC06450020060C00200647063100200686" & vbCrLf & Chr(26))
System.Threading.Thread.Sleep(10000)
M = M + SerialPort1.ReadExisting
SerialPort1.WriteLine("AT+CMGS=153" & vbCr)
SerialPort1.WriteLine("0691891901500051000B81***** *****F70008FF8B060804B49F05040646062F002006A906470 020062E06480628002006270633062A00200634064706CC062 F06270646064700200628064506CC063106CC06450020060C0 020063206CC062806270633062A00200648064406CC0020062 D06CC0641002006A90647002006450627002006480642062A0 0200646062F0627063106CC06450021062706440647" & vbCrLf & Chr(26))
System.Threading.Thread.Sleep(10000)
M = M + SerialPort1.ReadExisting
SerialPort1.WriteLine("AT+CMGS=57" & vbCr)
SerialPort1.WriteLine("0691891901500051000B81***** *****F70008FF2B060804B49F0505064500200639062C06440 020062706440648064406CC06A900200627064406410631062 C" & vbCrLf & Chr(26))
سلام،
شما بعد از ارسال هر پیام باید یک فالا زمانی مشخص صبر نمایید تا جواب ارسال را دریافت نمایید.
اگه پیام شما ارسال شده باشه علاوه بر OK ، یک شماره مرجع به شما میده. اینو من تو تصویرتون نمی بینم.
+CMGS: 38
من توصیه می کنم از Hyper terminal برای ارسال و تست استفاده کنید.
سلام،
این بعضی وقت ها پیش میاد. یعنی ممکنه ترافیک مخابرات باعث این بشه!!!!
باید یه نکته هم براتون بگم:
وقتی قصد دارید پیامهای چند قسمتی بفرستید، باید آن را به قسمت های مختلف بشکنین و بعد بفرستید. یعنی برای پیامهای فارسی حداکثر 70 کاراکتر!!!!
اینو گفتم تا بدونید اصلا ربطی نداره پیام شما 2، 3 و یا چند قسمتی باشه. اگه یکی رفت بقیه باید بره، مگر اینکه خط مشکل داسته باشه، سیم کارت شارژ نداشته باشه و یا مخابرات بازی دربیاره. هر قسمت به عنوان یک پیام میره.
ممنون
من با hyper هم تست کردم اما در این حالت دیگه cmgs+ را دریافت نمی کنم
ضمیمه 74164
سلام،
اگه گفتین PDU شما 153 کاراکتر است، تو این تصویر که هیچی نفرستادین؟
در ضمن شما که با VB کار میکنید و این تاپیک رو تا تهش خوندین بهترین چیز اینه که از کامپوننتی که بهتون گفتم استفاده کنید. اولش یکم گیر داره، ولی شما که با مفاهیم آشنایید و دستورات رو میشناسید این کامپوننت خیلی کاراست.
یکبار امتحان کنید
از همون کامپوننت شما استفاده کردم برای تولید PDU, و رشته ایجاد شده را paste کردم چون واقعا امکان تایپ یک رشته به آن بزرگی بدون امکان خطا نیست!
در پست 331 من همون کد ایجاد شده توسط شما را ارسال می کنم ویک delay iهم بین هر گذاشتم چیزی دریافت نکردم از طرفی هم با کامپوننتی که شما گفتین پیام 2 پارتی را مفرسته و دریافت هم می کنم اما وقتی متن بیشتر از 2 پارت باشه با اینکه +Cmgs را هم گرفتم اما چیزی دریافت نکردم !
سلام،
شما دقیقا چه جیزی می خواهید؟
آیا تایید ارسال را نمی گیرید؟ یا اینکه وقتی پیام ارسال می کنید و جواب ارسال را هم میگیرین ولی به شماره مورد نظر نمیرسه؟
این هم کد vb به همراه pdu ایجاد شده توسط کامپوننتی که زحمت اش را کشیدید:
SerialPort1.WriteLine("AT" & vbCr)
SerialPort1.WriteLine("AT+CPMS=""MT"",""MT"",""MT" "" & vbCr)
SerialPort1.WriteLine("AT+CMGF=0" & vbCr)
SerialPort1.WriteLine("AT+CMGS=152" & vbCr)
SerialPort1.WriteLine("0691891901500071000A81***** *****0008FF8B060804888E0301062706CC06460020063306C C0633062A064500200628062700200647062F0641002006270 6CC062C0627062F002006CC06A9067E06270631068606AF06C C002006480020062B0628062A00200627064406A9062A06310 648064606CC06A906CC0020062706370644062706390627062 A00200645062C0645064806390647002006470627" & Chr(26))
System.Threading.Thread.Sleep(10000)
M = M + SerialPort1.ReadExisting
SerialPort1.WriteLine("AT+CMGS=152" & vbCr)
SerialPort1.WriteLine("0691891901500071000A81***** *****0008FF8B060804888E030206CC0020064806310632063 406CC0020063706310627062D06CC002006AF0631062F06CC0 62F0647002006270633062A0020000D000A062706CC0646002 0063306CC0633062A0645002006420627062F0631002006280 64700200645062F06CC063106CC062A002006A9064406CC064 7002006390645064406CC0627062A002006450627" & Chr(26))
System.Threading.Thread.Sleep(10000)
M = M + SerialPort1.ReadExisting
SerialPort1.WriteLine("AT+CMGS=126" & vbCr)
SerialPort1.WriteLine("0691891901500071000A81***** *****0008FF71060804888E0303064406CC002006480020062 7062F0627063106CC00200645062C064506480639064700200 64806310632063406CC0020062706390645002006270632002 0062B0628062A0020064606270645002006270639063606270 621002006A90644062706330647062706CC0020" & Chr(26))
System.Threading.Thread.Sleep(10000)
M = M + SerialPort1.ReadExisting
به شماره مورد نظر نمی رسه آن هم در زمانی که بیش از 2 پارت باشه
با ایرانسل بدون مشکل تا 5 پارت را می فرسته.مشکل هممراه اول بود:قهقهه:
با سلام خدمت همه اساتید
من یه پروژه دارم که باید برنامه ارسال و دریافت اس ام اس به وسیله AT COMMANDS و مودم جی اس ام رو پیاده سازی کنم
من خیلی جستجو کردم و چندین نمونه رو هم پیدا کردم اما همه با پورت سریال پیاده سازی شده بودند و من نتونستم این برنامه ها رو تست کنم , من این برنامه ها رو اینجا قرار میدم , دوستان کسی این برنامه ها رو تست کرده ؟؟؟ آیا کار می کنند ؟؟؟
کسی از دوستان نمونه های تست شده دیگری ندارند ؟؟؟
ممنون می شم کمکم کنید :گریه:
سلام
*************نقل قول:
وقتی هم که پیامی ارسال می کنید:
AT+CMGS=32
>0691891901500031840B81905*******F50008FF12063306440627064500200645062D0645062F<ctl+z >
+CMGS: 38
OK
+CDS: 25
0691891901500006260B81905*******F5118010419433811180104194838100
این عدد 26 که در مبنای HEX است رو اگه تبدیل به دسیمال کنی میشه همون 38 که بالا دیدیم. یعنی اگه پیامی ارسال شد یک کد(38) میده، که وقتی گزارش تایید ارسال اومد بفهمیم مال کدوم پیام بوده. که ترجمه کد بالا میشه این:
+CDS همیشه دریافت نمیشه.علت اش را می شه توضیح دهید؟
با سپاس فراوان
سلام،
دریافت نمی شوند یا بعضی وقت ها دریافت نمی شوند؟
اگه دریافت نمی شوند باید برین
AT+CNMI
رو تنظیم کنید.
اگه بعضی وقتها دریافت نمیشه، گفتم تو این حالت یک عیبی که داره اینه که اگه نتونید تو لحظه که میاد اون رو دریافت نکنید انگاری انداختی دور!!!
اگه نتونی لحظه به لحظه پورت رو چک کنی بهتره از خالتی استفاده کنید که اینا تو حافظه ذخیره بشه.
چک کردن پیام کوتاه جدید و ایجاد یک کنترل از طریق پیام کوتاه
با سلام خدمت دوستان عزیز
من یه برنامه می خوام بنویسم که به محض رسیدن یک اس ام اس متن آن را چک کند و مثلا اگه نوشته بود SHUTDOWN یه کد را اجرا کند و کامپیوتر را خاموش کند
دوستان کسی می تونه من رو راهنمایی کنه ؟؟؟؟؟
مشکل من اینه که چجوری کدی بنویسم که به محض رسیدن پیام جدید متوجه بشه و متن پیام رو چک کند ؟؟؟؟
ممنون می شم
سلام،
با کامپوننت که من کار میکنم اینجوریه که برای دریافت پیام های جدید یک Event داره که ست میشه و بهش میگی اگه این رویداد انجام شد یک تابع رو فراخوانی کنه. تو این تابع میتونید بگی پیام جدید رو دربانک ذخیره کنه، ویا یک پیغام به کاربر بدی که پیام جدید اومده ویا ...
توی این رویداد شما میتونید تعریف کنید که بیاد پیام رو با متنی که میخوای مقایسه کنه اگه هر چی که شما گفتی بود یه تابع رو فراخوانی کن.
به همین راحتی....
تو کامپوننت های دیگه هم یه چیز عین این هست.
ممنون دوست عزیز اما راه کلیشو می خوام انجام بدم
می خوام با AT COMMAND ها خودم این event رو برنامه نویسی کنم
ممنون می شم راهنمایی کنید
طی جستجویی که کردم این رو پیدا کردم اما متوجه منظورش و طریقه استفاده این AT COMMAND ها نشدمنقل قول:
https://barnamenevis.org/showthread.p...C%D9%85%D8%9Fl
با سلام
بله یک دستور AT هست بنام:
AT+CNMI=2,1,0,1
که میشه گفت event مودم را برای دریافت sms جدید فعال میکنه از این دستور به بعد هر گاه اس ام اس جدید بیاد به صورت زیر به نمایش در میاد:
+CMTI: "ME",108
این پاسخ از سمت مودم نمایانگر محل ذخیره سازی اس ام اس جدید می باشد.
دوستان کسی می تونه من رو کمک کنه ؟؟؟؟
چطوری زیر برنامه بنویسم که این عمل رو انجام بده ؟؟؟؟
ممنون میشم
مشکل در ارتباط بین مودم D link DWM-156 و hyperterminal
با سلام خدمت همه دوستان
من یه مودم D link DWM-156 خریدم که با استفاده از نرم افزار خود مودم می توان اس ام اس فرستاد اما وقتی می خوام با هایپر ترمینال بهش وصل شوم وصل می شود اما احازه تایپ هیچ دستوری درون اون صفحه بهم نمی ده
کسی می دونه باید چی کارش کنم ؟؟؟؟
ممنون می شم
فکر کنم مشکل کار اینجاست که برنامه مخصوص خود D link پورت رو در اختیار می گیرد و با وجود اینکه برنامه رو می بندم پورت آزاد نیمشه
کسی از دوستان نمی دونه چیکار باید انجام بدم تا پورت آزاد شه ؟؟؟؟