سلام خدمت همه ی دوستان.
من یک پروژه دریافت sms با sim800l اجرا کردم!
به کمک این تاپیک
همه چی خوبه ولی چنتا مشکل دارم.
من کد زیر را همواره واسه دریافت اس ام اس جدید به ماژول میفرستم
بعد وقتی متن پیام را میخونم اگه با اون دستورایی که میخواستم برابر بود یه عملیاتی را انجام میده و در اخر sms_index را ++ یا همون به اضافه 1 میکنه و برای خوندن پیام بعدی اماده میشه.
حالا مشکل اینه که اگه یک پیام تبلیغاتی واسم بیاد یا متن پیام با متن هایی که من میخواستم برابر نباشه ، دگ نمیتونم مقدار sms_index را ++ کنم و برای پیام بعدی امادش کنم!
من متن اس ام اس دریافتی را در یک ارایه به نام sms_txt میریزم و باید بگم چون میکرو همواره داره دستور AT+CMGR را به ماژول میفرسته و در صورتی که پیامی دریافت نشده باشه مقداره sms_txt خالی هست پس نمیتوم همیشه بعد از ارسال AT+CMGR مقدار sms_txt را ++ کنم !
حالا به نظرتون اگه sms_txt خالی بود من چطوری sms_index را افزایش بدم.
از کد های زیر استفاده کردم ولی هیچ نتیجه ای نگرفتم.
اینم بگم برای این که میکرو مدام ماژول را چک نکنه و هر وقت sms اومد کد را برای ماژول بفرسته از وقفه خارجی هم استفاده کردم.
ولی ماژول وقتی ماژول sms دریافت میکرد پایه ی ring ماژول نویز میگرفت و به غیر از پالس اصلی چندتا پالس دگ هم میداد و این باعث میشد که تابع وقفه چندین بار اجرا بشه و sms_index چندین بار ++ بشه و پیام بعدی رو نخونه!
شاید یکم بد مشکلمو بیان کرده باشم! اگه جایی نا مفهموم بگید تا توضیح بدم.
ممنونم میشم راهنمایی کنید.!
من یک پروژه دریافت sms با sim800l اجرا کردم!
به کمک این تاپیک
همه چی خوبه ولی چنتا مشکل دارم.
من کد زیر را همواره واسه دریافت اس ام اس جدید به ماژول میفرستم
کد:
printf("AT+CMGR=%d%c",sms_index,ENT);
حالا مشکل اینه که اگه یک پیام تبلیغاتی واسم بیاد یا متن پیام با متن هایی که من میخواستم برابر نباشه ، دگ نمیتونم مقدار sms_index را ++ کنم و برای پیام بعدی امادش کنم!
من متن اس ام اس دریافتی را در یک ارایه به نام sms_txt میریزم و باید بگم چون میکرو همواره داره دستور AT+CMGR را به ماژول میفرسته و در صورتی که پیامی دریافت نشده باشه مقداره sms_txt خالی هست پس نمیتوم همیشه بعد از ارسال AT+CMGR مقدار sms_txt را ++ کنم !
حالا به نظرتون اگه sms_txt خالی بود من چطوری sms_index را افزایش بدم.
از کد های زیر استفاده کردم ولی هیچ نتیجه ای نگرفتم.
کد:
if(!strstr(sms_txt,"")){sms_index++;} if(strlen(sms_txt)!=0){sms_index++;} if(strlen(sms_txt)>0){sms_index++;} if(sms_txt[0]!='\0'){sms_index++;}
ولی ماژول وقتی ماژول sms دریافت میکرد پایه ی ring ماژول نویز میگرفت و به غیر از پالس اصلی چندتا پالس دگ هم میداد و این باعث میشد که تابع وقفه چندین بار اجرا بشه و sms_index چندین بار ++ بشه و پیام بعدی رو نخونه!
شاید یکم بد مشکلمو بیان کرده باشم! اگه جایی نا مفهموم بگید تا توضیح بدم.
ممنونم میشم راهنمایی کنید.!
دیدگاه