سلام دوستان
اخیرا یک پروژه با سDم 800 و بیسک راه اندازی کردم.
از اینتراپت وقفه سریال استفاده کردم.هر وفت وقفه سریال فعال میشه .در داخل وقفه بصورت نمونه کد زیر مقدار بافرUDRرادر متغیر رشته ای RINGذخیره می کنم.
تابع وقفه :
عبارت وقفه رو درست دریافت می کنه هر وقت زنگ می زنم بدون کمترین اشتباهی عبارت RING میده یا هر وقت پیام میدم عبارت CMTI= "SM"1+ رو هم میده شاید صد بار تست کردم و هیچ وقت اشتباه نشده .
اما مشکل از اونجا پیش میاد که ووقتی از روی اطلاعات سریال متوجه وجود پیام میشم به تابع دریافت پیامک میرم و عبارت "PRINT "AT+CMGR=1رو برای میکرو می فرستم در اخل تابع دریافت پیامک برای ماژول می فرستم .
اما بعد از ارسال این دستور میکرو هنگ می کنه.و برنامه از اول اجرا میشه.
تابع خوندن پیامک:
والا الان چند روزه که درگیر این قضیه هستم.تابع دریافت پیامک درسته چون قبلا با این کار کردم.
حیران موندم.
اخیرا یک پروژه با سDم 800 و بیسک راه اندازی کردم.
از اینتراپت وقفه سریال استفاده کردم.هر وفت وقفه سریال فعال میشه .در داخل وقفه بصورت نمونه کد زیر مقدار بافرUDRرادر متغیر رشته ای RINGذخیره می کنم.
تابع وقفه :
کد:
Capture: B = Udr If B <> 10 And B <> 13 And B <> 0 Then Ring = Ring + Chr(b) If B = 10 Then Incr T If T = 2 Then : Zing = Ring : T = 0 : Ring = "" : End If Return
اما مشکل از اونجا پیش میاد که ووقتی از روی اطلاعات سریال متوجه وجود پیام میشم به تابع دریافت پیامک میرم و عبارت "PRINT "AT+CMGR=1رو برای میکرو می فرستم در اخل تابع دریافت پیامک برای ماژول می فرستم .
اما بعد از ارسال این دستور میکرو هنگ می کنه.و برنامه از اول اجرا میشه.
تابع خوندن پیامک:
کد:
Resive_pm: Print "AT+CMGR=1" B = 0 : Pms = "" Do B = Inkey() Select Case B Case 0 Case 10 Case 13 If Pms <> "" Then Exit Do Case Else Pms = Pms + Chr(b) End Select Loop Return
حیران موندم.
دیدگاه