اطلاعیه

Collapse
No announcement yet.

تحلیل کد فرستاده شده از sim900

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #16
    پاسخ : تحلیل کد فرستاده شده از sim900

    سلام دوست عزیز تو این کد هایی که شما نوشتید از شرط if خیلی استفاده کردین و حافظه رو الکی اشکال کردین شما بهتره پایه ri پین شماره 4 ماژول رو به اینتراپت حساس به سطح میکرو وصل کنی و یه فلگ تو برنامت به عنوان فلگ دریافت sms یا ring تعریف کنی پس از اومدن هر کدوم از اینا فلگ رو یک کنی و برنامه اینتراپت دریافت سریال رو به صورت زیر بنویسی
    کد:
    [code=c]data_rx=UDR;
    
    if (!flag_bit_rx_0a)
     {
    	if (data_rx==0x0d && !flag_bit_rx_0d)
     		flag_bit_rx_0d=1;
    	else if (data_rx==0x0a && flag_bit_rx_0d)
    		flag_bit_rx_0a=1
     }
    else
      data_buffer[index]=data_rx;
    	index++
    [/code]

    حالا تو WHILE برنامت این فلگ (فلگ SMS یا RING) رو چک کن اگه فلگ برابر یک بود با استفاده از برنامه زیر که کار خودمه دیتای داخل بافر رو چک کن ببین رینگ بوده یا اس ام اس

    کد:
    [code=c]  if (search_str(data_buffer,"ring")!=255)
       //recive ring ring ring
      if (search_str(data_buffer,"+CMT")!=255)
       //recive sms sms sms
    [/code]

    تابع جستوجی رشته مورد نظر توی رشته دیگه که در جواب اگر رشته مورد نظر وجود نداشته باشه مقدار 255 رو برمیگردونه در غیر این صورت مکان اولین کارکتر رشته موردنطر رو توی رشته مورد جستجو رو برمیگردونه

    کد:
    [code=c] int search_str(const char *stra,const char *strb)
    {
     byte i=0,j=0;
     
      for (j=0;j<=strlen(stra);j++)
       {
        if (i>=strlen(strb))
          {
            return (j-i);
            break;
          }
        else
          {
            if (stra[j]==strb[i])
              i++;
            else
              i=00;
          }
       }
        if (i<strlen(strb)
        
     return 255;
    }
    [/code]

    دیدگاه


      #17
      پاسخ : تحلیل کد فرستاده شده از sim900

      سلام اول از همه از شما چهار تا دوست خوبم
      Saeed Saeb, hs_golpa, Shapour-Ardebil,mh1762


      که در این مورد دارید کمک میکنید تشکر میکنم ....

      تو این برنامه ای که دوست خوبمون Saeed Saeb
      نوشته ی سوالی دارم ؟

      این تابع
      sim_int_code
      تو روال وقفه میکرو قرار میدید؟

      سوال دوم
      برای تحریک کردن وقفه میکرو از پایه 4 ماژول SIM900 استفاده میکنید؟

      سوال سوم
      این پایه شماره 4 برای تماس و SMS کار برد داره برای باقی پیام ها باید پیکار کرد ؟؟؟؟

      بعنوان مثال:
      پیام هایی که خود مازول میفرسته که مربوط به تماس و SMS نیستن مثل وضعیت ریجستر بودن ماژول؟؟؟(AT دقیق یادم نیست چی بود..)

      البته اینو باید بگم ی سوال دارم با 3 تا زیر سوال :mrgreen:

      دیدگاه


        #18
        پاسخ : تحلیل کد فرستاده شده از sim900

        نوشته اصلی توسط h.torabi
        سلام اول از همه از شما سه تا دوست خوبم
        Saeed Saeb, hs_golpa, Shapour-Ardebil,
        mh1762
        که در این مورد دارید کمک میکنید تشکر میکنم ....

        تو این برنامه ای که دوست خوبمون Saeed Saeb
        نوشته ی سوالی دارم ؟

        این تابع
        sim_int_code
        تو روال وقفه میکرو قرار میدید؟

        سوال دوم
        برای تحریک کردن وقفه میکرو از پایه 4 ماژول SIM900 استفاده میکنید؟

        سوال سوم
        این پایه شماره 4 برای تماس و SMS کار برد داره برای باقی پیام ها باید پیکار کرد ؟؟؟؟

        بعنوان مثال:
        پیام هایی که خود مازول میفرسته که مربوط به تماس و SMS نیستن مثل وضعیت ریجستر بودن ماژول؟؟؟(AT دقیق یادم نیست چی بود..)

        البته اینو باید بگم ی سوال دارم با 3 تا زیر سوال :mrgreen:
        خواهش میکنم دوست من
        بله من از وقفه خود میکرو (usart) استفاده کردم در مورد پایه 4 نظری ندارم چون کار نکردم باهاش و ok و error و اینارو نمیده
        هر بار که یک کاراکتر وارد میکرو میشه یه وقفه رخ میده تابع sim_int_code اجرا میشه توی تابع اگه کاراکتر space بود یا 0x0a هیچ کاری انجام نمیشه یعنی عملا نادیده گرفته میشه و حدف میشه اگه 0x0d بود یه شمارنده اینو میشمره اگه کاراکتر دیگه ای بود داخل یه ارایه میره وقتی 0x0d به 2 یا بیشتر رسید کد داخل ارایه تحلیل میشه فلگ مورد نظز ریترن میشهبه تابع اصلی اینتراپت و ریخته میشه تو یه متغییر گلوبال بعد تحلیل کد ارایه خالی و تعداد شمارنده 0x0d هم 0 میشه یعنی عملا ریست میسه واسه ست جدید داده . از خط 276 تا اخر دقیقا یک نمونه از برنامه وجود داره که اگه عینا بنویسید کار میکنه
        البته از تابع usart خودم استفاده کردم تابع کدویزارد مشکل داره با وقفه درست و درمون جواب نمیده
        اشکهایی که پس از هر شکست میریزیم همان عرقیست که برای پیروزی نریخته ایم.
        هیتلر

        دیدگاه

        لطفا صبر کنید...
        X