پاسخ : تحلیل کد فرستاده شده از sim900
سلام دوست عزیز تو این کد هایی که شما نوشتید از شرط if خیلی استفاده کردین و حافظه رو الکی اشکال کردین شما بهتره پایه ri پین شماره 4 ماژول رو به اینتراپت حساس به سطح میکرو وصل کنی و یه فلگ تو برنامت به عنوان فلگ دریافت sms یا ring تعریف کنی پس از اومدن هر کدوم از اینا فلگ رو یک کنی و برنامه اینتراپت دریافت سریال رو به صورت زیر بنویسی
[/code]
حالا تو WHILE برنامت این فلگ (فلگ SMS یا RING) رو چک کن اگه فلگ برابر یک بود با استفاده از برنامه زیر که کار خودمه دیتای داخل بافر رو چک کن ببین رینگ بوده یا اس ام اس
[/code]
تابع جستوجی رشته مورد نظر توی رشته دیگه که در جواب اگر رشته مورد نظر وجود نداشته باشه مقدار 255 رو برمیگردونه در غیر این صورت مکان اولین کارکتر رشته موردنطر رو توی رشته مورد جستجو رو برمیگردونه
[/code]
سلام دوست عزیز تو این کد هایی که شما نوشتید از شرط 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++
حالا تو 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
تابع جستوجی رشته مورد نظر توی رشته دیگه که در جواب اگر رشته مورد نظر وجود نداشته باشه مقدار 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; }
دیدگاه