ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.






جهت تبلیغ در وب سایت ECA کلیک کنید.

کاربران برچسب زده شده

نمایش نتایج: از 1 به 3 از 3
  1. #1
    2008/05/26
    1,045
    534

    نحوه تشخیص SMS دریافتی ذخیره شده در بافر با SIM900

    سلام
    من واسه خوندن متن و شماره SMS در زمان دریافت مشکلی ندارم ولی مشکل زمانی پیش میاد که میکرو داره یه کار دیگه انجام میده و در این زمان مثلا یک SMS و یک تماس توسط SIM900 دریافت میشه که تمام اینها تو بافر سریال میکرو ذخیره میشه.
    حالا مشکل من اینه که اگه اول SMS دریافت بشه میشه متن و شماره اون SMS رو در اورد ولی تو این حالت اگه بخوام شماره کسی که تماس گرفته رو در بیارم یخورده کار یخت میشه!
    یعنی باید تو رشته دریافتی که در بافر قرار داره دنبال متن CLIP بگردم که بعد از اون بتونم شماره فرد تماس گیرنده رو در بیارم
    از دوستان کسی تا حالا این مشکل رو حل کرده؟
    یا اینکه تابعی واسه سرچ کردن تو رشته هست؟
    اگه نباشه دیگه مجبورم یه تابع سرچ خودم بنویسم که به نظرم یکم حجم برنامه زیاد شه
    در ضمن از کامپایلر AVR STUDIO استفاده میکنم
  2. #2
    2008/05/26
    1,045
    534

    پاسخ : نحوه تشخیص SMS دریافتی ذخیره شده در بافر با SIM900

    سلام
    من برنامه رو به شکل زیر نوشتم و به خوبی جواب گرفتم!

    while ( (temp[f1]!='C') && (f1<=245) ) f1++;
    f2=f1+1;
    while ( (temp[f2]!='C') && (f2<=245) ) f2++;
    f3=f2+1;
    while ( (temp[f3]!='C') && (f3<=245) ) f3++;
    f4=f3+1;
    while ( (temp[f4]!='C') && (f4<=245) ) f4++;
    f5=f4+1;
    while ( (temp[f5]!='C') && (f5<=245) ) f5++;



    i=0;


    if (temp[f1]=='C')
    {
    for (t=f1;t<(f1+4);t++)
    {
    buffer1[i]=temp[t];
    i++;
    buffer1[i]=0;
    }
    }
    i=0;
    if (temp[f2]=='C')
    {
    for (t=f2;t<(f2+4);t++)
    {
    buffer2[i]=temp[t];
    i++;
    buffer2[i]=0;
    }
    }

    i=0;
    if (temp[f3]=='C')
    {
    for (t=f3;t<(f3+4);t++)
    {
    buffer3[i]=temp[t];
    i++;
    buffer3[i]=0;
    }
    }
    i=0;
    if (temp[f4]=='C')
    {
    for (t=f4;t<(f4+4);t++)
    {
    buffer4[i]=temp[t];
    i++;
    buffer4[i]=0;
    }
    }

    i=0;
    if (temp[f5]=='C')
    {
    for (t=f5;t<(f5+4);t++)
    {
    buffer5[i]=temp[t];
    i++;
    buffer5[i]=0;
    }
    }



    if ( strcmp ((const char*)buffer1,"CMT:")==0 )
    {
    CMT(f1,temp);
    strcpy ((char*)num1,(char*)num);
    strcpy ((char*)matn1,(char*)matn);
    }
    if ( strcmp ((const char*)buffer2,"CMT:")==0 )
    {
    CMT(f2,temp);
    strcpy ((char*)num2,(char*)num);
    strcpy ((char*)matn2,(char*)matn);
    }
    if ( strcmp ((const char*)buffer3,"CMT:")==0 )
    {
    CMT(f3,temp);
    strcpy ((char*)num3,(char*)num);
    strcpy ((char*)matn3,(char*)matn);
    }
    if ( strcmp ((const char*)buffer4,"CMT:")==0 )
    {
    CMT(f4,temp);
    strcpy ((char*)num4,(char*)num);
    strcpy ((char*)matn4,(char*)matn);
    }
    if ( strcmp ((const char*)buffer5,"CMT:")==0 )
    {
    CMT(f5,temp);
    strcpy ((char*) num5,(char*) num);
    strcpy ((char*)matn5,(char*)matn);
    }

    if ( strcmp ((const char*)buffer1,"CSQ:")==0) CSQ(f1,temp);
    if ( strcmp ((const char*)buffer2,"CSQ:")==0) CSQ(f2,temp);
    if ( strcmp ((const char*)buffer3,"CSQ:")==0) CSQ(f3,temp);
    if ( strcmp ((const char*)buffer4,"CSQ:")==0) CSQ(f4,temp);
    if ( strcmp ((const char*)buffer5,"CSQ:")==0) CSQ(f5,temp);




    طرز کار برنامه به اینصورت هست که میاد تو رشته دریافتی از sim900 که در متغیر temp قرار داره دنبال کلماتی میگرده که با C شروع شده (به این دلیل C گذاشتم چون رشته هایی که لازم دارم همش با C شروع میشن! مثل CMT و CSQ و CLIP) و بعد شماره کاراکتری که C از اون شروع شده رو تو 5 تا متغیر مختلف ذخیره میکنه.یعنی اگه تو رشته دریافت شده 5 تا C وجود داشته باشه مکان شروع این کلمات رو تو 5 تا متغیر مختلف ذخیره میکنه.
    در مرحله بعدی ما باید تشخیص بدیم که این کلماتی که با C شروع شده مربوط به چی هست.برای همین میایم 3 کلمه بعد از کاراکتر C رو جدا میکنیم و در بافرهای مختلف ذخیره میکنیم(نکته اینجاست که ممکنه فقط یک بافر پر بشه و یا اینکه هر 5 بافر پر بشه و در مواقعی که چندین SMS همزمان دریافت بشه ممکنه SMS های آخر رو از دست بدیم! اگه براتون مهمه میتونید تعداد بافرها رو افزایش بدید)
    و مرحله بعد چک میکنیم که این کلماتی که با C شروع شدن CSQ هست یا CMT!
    اگه CSQ باشه وارد تابع CSQ میشه که نوشتم و سیگنال رو نمایش میده
    اگه CMT باشه وارد تابع CMT میشه و متن و شماره SMS رو بیرون میاره

    حالا این راهی هست که من استفاده کردم
    دوستان راه بهتری سراغ ندارن؟
  3. #3
    2008/05/26
    1,045
    534

    پاسخ : نحوه تشخیص SMS دریافتی ذخیره شده در بافر با SIM900

    سلام
    دوستان کسی نظری نداره؟
    راه بهتری سراغ ندارید؟
نمایش نتایج: از 1 به 3 از 3

موضوعات مشابه

  1. خواندن sms دریافتی از ماژول sim900
    توسط 2er در انجمن ماژول های GPS - GSM - GPRS
    پاسخ: 6
    آخرين نوشته: 2019/12/10, 01:43
  2. پیام دریافتی در sim900
    توسط rezarez7 در انجمن ماژول های GPS - GSM - GPRS
    پاسخ: 0
    آخرين نوشته: 2015/10/04, 22:19
  3. SIM900 تبدیل پیام دریافتی
    توسط cmuiran در انجمن میکروکنترلرهای AVR
    پاسخ: 2
    آخرين نوشته: 2015/04/13, 21:16
  4. پاسخ: 4
    آخرين نوشته: 2014/05/21, 13:17
  5. ذخیره دیتا در بافر در avr
    توسط MA90 در انجمن میکروکنترلرهای AVR
    پاسخ: 2
    آخرين نوشته: 2012/06/11, 15:20

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •