سلام ، خواهش میشه.
منظورم اینی نیست که شما انجام دادی! شما باید یه متغیر تعریف کنی و به ازای هر دفعه که Case 13 اتفاق می افته یکی این متغیر رو زیاد کنی. بعداز سه بار ، تازه بری رشته ی sms رو بسازی.
سلام ، خواهش میشه.
منظورم اینی نیست که شما انجام دادی! شما باید یه متغیر تعریف کنی و به ازای هر دفعه که Case 13 اتفاق می افته یکی این متغیر رو زیاد کنی. بعداز سه بار ، تازه بری رشته ی sms رو بسازی.
.
سلام Morteza خان
ممنون برای پاسخ سریعتون
تست میکنم ببینم میتونم جواب بگیرم
بازم ممنون
پ.ن:
در مورد برنامه ارسال sms :
اس ام اس ارسال میکنه ولی دو اشکال داره:
1 : SMS را پشت سر هم ارسال میکنه و تشخیص نمیده ارسال شده: آیا می تونید دستوری در برنامه اضافه کنید که بعد از ارسال SMS تشخیص بده و
از حلقه خارج شده و از برنامه خارج بشه؟
2: متن SMS ارسالی (همون طور که در برنامه مشخصه) باید فقط GSM Module Test باشه ولی به صورت زیر ارسال شده و کلی چیزای
دیگه همراهش ارسال میشه؟
متن SMS ارسالی از برنامه (ماژول) به گوشی:
کد:ATکد:AT+CMGF=1 AT+CMGS="09********" gsm mODULE tEST
این هم که سورس برنامتون:
کد:$regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 '~~~~~~~~~~~~~~~~~~~~~~~~~~~ LCD ~~~~~~~~~~~~~~~~~~~~~~~~~~ Config Lcd = 16 * 2 Config Lcdpin = Pin , Rs = Portb.5 , E = Portb.4 , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 '~~~~~~~~~~~~~~~~~~~~~ Configurations ~~~~~~~~~~~~~~~~~~~~~ Config Pinc.5 = Input '~~~~~~~~~~~~~~~~~~~~~~ Main program ~~~~~~~~~~~~~~~~~~~~~~ Cursor Off Wait 3 Set Portc.5 Waitms 60 Reset Portc.5 Cls Locate 1 , 1 Lcd "GSM ON" Wait 2 Cls Locate 1 , 1 Lcd "Sending..." Waitms 500 Do If Pind.2 = 0 Then Print "at" Waitms 500 Print "AT+CMGF=1" Waitms 500 Print "AT+CMGS=" ; Chr(34) ; "0935××××" ; Chr(34) Waitms 100 Print "AVR Test 1" ; Chr(26) Waitms 550 End If Loop End
ویرایش توسط sina1359 : 31-03-2012 در ساعت 23:13
مرتضی خان
هرکاری که بود کردم و هر جور دستور شرطی بود قرار دادم
واحد اضافه کردمو....
نشد که نشد
این کل برنامه منه (بهتره بگید برنامه شما)
پ.ن: مرتضی خان , یک چیزی بگم: نمیدونید چقدر تو فروما دنبال شما گشتم
سورس برنامه دستم رسیده بود ولی نمیدونستم نویسنده اون کیه
تا امروز اتفاقی این تاپیکو میخوندم که ناگهان در صفحه 17 با شما
و مقالتون آشنا شدم
نمیدونید بعد 2 هفته جستجو , چقدر خوشحال شدم
فکر میکردم برنامه نویسش خارجی باشه
اصلا فکرشو نمیکردن از بچه های ایرونی خودمون باشه
کد:$regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 '~~~~~~~~~~~~~~~~~~~~~~~~~~ Configurations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Config Lcd = 16 * 2 Config Lcdpin = Pin , Rs = Portb.5 , E = Portb.4 , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Input ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Config Pinc.5 = Input '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Variable ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Dim G As Byte : G = 0 Dim B As Byte Dim Sms As String * 250 : Sms = "" '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ initionaliz ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Cursor Off Wait 3 Set Portc.5 Waitms 60 Reset Portc.5 Cls Locate 1 , 1 Lcd "GSM ON" Wait 2Cls Locate 1 , 1 Lcd "Get SMS..." Wait 3 Cls '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Main program ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Print "AT+CMGD=0,4" Waitms 500 Cls Locate 1 , 1 Lcd "Delete Sms" Waitms 500 Cls Do Print "AT+CMGR=1" Sms = "" Do B = Inkey() Select Case B Case 0: Case 13 : Incr G If Sms <> "" Then Exit Do Case 10 : If Sms <> "" Then Exit Do Case Else If G = 3 Then Sms = Sms + Chr(b) End Select Loop Locate 1 , 1 Lcd SmsLoop End
ویرایش توسط sina1359 : 31-03-2012 در ساعت 22:14
نباید اینطوری باشه. احتمالا یه جای سخت افزارتون می لنگه! چون برنامه ای که نوشتید درسته. برای تشخیصش هم یه نگاه به دیتاشیت بندازید یا از توی هایپر ترمینال خروجی های ماژول بعداز ارسال رو ببینید. اینطوری حتما به نکته های خوبی می رسید.1 : SMS را پشت سر هم ارسال میکنه و تشخیص نمیده ارسال شده: آیا می تونید دستوری در برنامه اضافه کنید که بعد از ارسال SMS تشخیص بده و
از حلقه خارج شده و از برنامه خارج بشه؟
برای رفع این مشکل باید حالت اکوی ماژول رو توسط دستور ATE0 خاموش کنید.2: متن SMS ارسالی (همون طور که در برنامه مشخصه) باید فقط GSM Module Test باشه ولی به صورت زیر ارسال شده و کلی چیزای
دیگه همراهش ارسال میشه؟
برنامه ای که نوشتید کلا مشکل داره! بیچاره AVR داره دائما این برنامه رو تکرار می کنه ، معلومه قاط میزنه! ضمن اینکه شما هر بار قبل از اینکه وارد حلقه ی Do-loop دوم بشید باید متغیر G رو صفر کنید.هرکاری که بود کردم و هر جور دستور شرطی بود قرار دادم
واحد اضافه کردمو....
نشد که نشد
راستش من در برابر سایر دوستانی که توی این سایت دارن فعالیت می کنن عددی نیستم. کلا عزیزانی که توی این فروم جمع شدن خیلی گل و بی ادعان. من از دوستی با این افراد واقعا خوشحالم.پ.ن: مرتضی خان , یک چیزی بگم: نمیدونید چقدر تو فروما دنبال شما گشتم
سورس برنامه دستم رسیده بود ولی نمیدونستم نویسنده اون کیه
تا امروز اتفاقی این تاپیکو میخوندم که ناگهان در صفحه 17 با شما
و مقالتون آشنا شدم
نمیدونید بعد 2 هفته جستجو , چقدر خوشحال شدم
فکر میکردم برنامه نویسش خارجی باشه
اصلا فکرشو نمیکردن از بچه های ایرونی خودمون باشه
در انتها اینم بگم که هدف من از اون آموزش این بود که به همه ی کسانیکه می خوان این ماژول و یا انواع مشابه رو راه اندازی کنن یه سر نخ در سخت افزار و یه سرنخ در نرم افزار داده باشم. تا بدونن که کار ساده ای هست و سخت یا غیرممکن نیست. چون خودم خیلی بلا سرم اومد تا راش بندازم تصمیم گرفتم که تجربیاتم رو در اختیار دیگران قرار بدم تا زودتر به هدفشون برسن.
شخصا عقیده دارم که سایر سوالاتی که شما دوست عزیز و یا دیگران می پرسن بخشی از کاره که به عهده ی خودتون هست و تنها با تلاش و فهم دقیق مطلب میشه به جوابشون رسید.
کلا هدف همه ی فعلان این سایت هم همینه ، یعنی اینکه سرنخ های لازم برای شروع کار به دیگران داده بشه تا اونا یه فعالیتی رو شروع کنن و به سرانجام برسونن. نه اینکه یه مطلبی بطور کامل ساخته و پرداخته و در انتها تحویل بشه.
امیدوارم از حرفام ناراحت نشده باشید.
موفق و سربلند باشید.
.
سلام مرتی خان
بینهایت ممنون
پ.ن: بله حق باشماست
شیرینی کار با میکرو هم همینه
که خود فرد بتونه موانعو از سر راه بر داره...
مرتضی خان این قسمتو دقیقا متوجه نشدم
کجای کار من اشتباه؟
چرا دائما برنامه تکرار میشه
من که تغییر زیادی تو برنامه شما ندادم
میتونید راهنمایی کنید اشکال من در کجاست
از حلقه اوله؟
ازحلقه دومه (حلقه داخلی)؟
خارج حلقه هست؟....
مگر نه این که دو دستور شرطی که متغییر sms را چک میکنه که
خالی باشند , جلوی برنامه دور زدن برنامهئ را میگیرد...
سلام آقا مرتضی
دستور اکو آف را باید به ماژول به این صورت ارسال کنیم (قبل ارسال sms و دستور AT)
کد:Print "ATE=0" Waitms 500
سوال دیگه هم پیش میاد:کد:Print "AT" Waitms 500 Print "ATE=0" Waitms 500 Print "AT+CMGF=1" Waitms 500 Print "AT+CMGS=" ; Chr(34) ; "0936×××××" ; Chr(34) Waitms 100 Print "TEST" ; Chr(26) Waitms 600
که اکو را باید یک بار خاموش کرد و ماژول برای همیشه Echo اون خاموش میمونه؟ و دیگر در برنامه نویسی نیاز به
نوشتن این دستور نیست؟
یا هر بار باید در اول برنامه ارسال پیامک این دستور اجرا بشه تا اکو خاموش بشه ؟
پ.ن: هر کاری کردم اکو خاموش نشد؟!
ویرایش توسط sina1359 : 01-04-2012 در ساعت 11:47
برنامه ی شما همیشه داره اجرا اجرا میشه ، بدون تنفس. شما که همیشه نمی خوای پیامک بخونی! حلقه ی Do-Loop دومی رو بیار بیرون از حلقه ی اول یا یه دستور شرطی برای اجراش بذار یا از پایه ی RI و حالت وقفه ای برای خوندن پیامک استفاده کن.کجای کار من اشتباه؟
چرا دائما برنامه تکرار میشه
من که تغییر زیادی....
حالت اکو با دستور ATE0 خاموش میشه. به همین صورتی که نوشتم. وقتی هم که یک بار خاموشش کنی تا آخر خاموش می مونه. ولی بعداز اینکه ماژول یک بار خاموش روشن بشه باز بر می گرده به تنظیمات کارخونه و اکو روشن میشه. بنابراین یکبار اول برنامه خاموشش کنید.که اکو را باید یک بار خاموش کرد و ماژول برای همیشه Echo اون خاموش میمونه؟ و دیگر در برنامه نویسی نیاز به
نوشتن این دستور نیست؟
.
ویرایش توسط sina1359 : 01-04-2012 در ساعت 15:50
سلام به همگی
اگه led ماژول sim900 بعد از چند بار چشمک زدن خاموش بشه مشکل از چیه؟
ضمنا ارتباط ماژول با کامپیوتر برای چند ثانیه برقراره و اطلاعاتی هم ارسال میکنه اما بعد از آن نه میتونم اطلاعاتی بفرستم نه بگیرم.
سلام به دوستان
netlight این ماژول بعد از راه اندازی به ندرت بیشتر از 5 بار چشمک میزند . یعنی بعد از چند با چشمک زدن خاموش میشود.
به نظر شما مشکل از چیه؟ ایا مشکل از انتن دهیه یا چیز دیگر؟
با سلام
احتمالا مشکل تغذیه ماژول باشه اگه اشتباه نکنم برای روشن شدن حدود 2 آمپر لازمه
سلام
بعید میدونم برای این مورد باشه. تغذیشو با lm317 ساختم . ضمن اینکه چند بار برای مدت طولانی تری روشن شد
من با این ماژول تو محیط هایپرترمینال ارتباط برقرار کردم اما شبکه را نمی شناسد!!!!!سیم کارت ایرانسل استفاده کردم
بابا ایول!!!!!
آقای صفامنش واقعا کارت بیسته. من پروژتو دیدم واقعا حال کردم برنامه نویسیش کاملا اصولی و درسته!!آخه ما تا حالا هرچی برنامه تو این زمینه دیدیم هر کدوم یه جاییش مشکل داشت. البته برنامه ی شما هم یه مشکل اساسی داره که الان میگم:
**اگه کسی اسمس بدون کد # بفرسته برنامه تو تابع cmgr تو حلقه ی ('#') wait_to_get
می مونه!!!!!!!!!!!!!!!!!**
خوب معلومه مشکل داره چون این فقط یک پروژه ی دانشجویی بود. یکم روش کار کنید حل میشه. من خودم الان یک کاری کردم که در هر شرایطی، حتی اگه دستگاه باهاش مشکل داشته باشه و اون کارو نتونه انجام بده، بالاخره خودشو آماده ی کارای بعدی نگه میداره و هنگ نمیکنه
سلام دوست عزیز
دوست عزیز
نمیدونم چی شد ماژولم سوخت
نمیدونم چرا هیچ sms نمیفرسته ویا دریافت نمیکنه
یک دفعه چیش شد
فکر کنم هی خاموش روشنش کردم این جوری شد
ماژول کار میکنه و تماس میگیرم واکنش نشون میده وled متصل به
ri روشن میشه و نشون میده که با سیمکارت ارتباط داره و
حتی sms و یا تماسو دریافت میکنه ولی از پایه rxd و txd انگار دیگه
چیزی نمیگیری یا نمیفرسته...
میکرو را هم تغییر دادم ولی درست نشد
به چه صورت ماژول را ریست کنم (یا همون تنظیمات کارخونه)؟
باید از همه ی 9 پین استفاده کنی . من این کار رو با max232 انجام دادم و از ماژول دیتا هم گرفتم.
ایراد از مدار بود درست شد.الان به ایرانسل می تونم زنگ بزنم اما همراه اول نه!!!چرا؟؟؟