اطلاعیه

Collapse
No announcement yet.

اشکال ارسال اس ام اس های متوالی با sim900

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

    اشکال ارسال اس ام اس های متوالی با sim900

    سلام دوستان و مهندسین عزیز
    توی یه پروژه ای میخواستم با sim900 و avr اس ام اس های متوالی بفرستم
    اما فقط اس ام اس اولی ارسال میشه
    کد تابع به شکل زیر
    کد:
    for(FOR=0;FOR<5;FOR++)
      {
        if(e_number[FOR][12]==2)
        {
        lcd_clear();
        lcd_putsf("Sending SMS...");
        printf("AT+CMGF=1\r"); 
        delay_ms(200);
        printf("AT+CSCS=\"GSM\"\r"); 
        delay_ms(200);
        printf("AT+CMGS=");
        putchar('"');
        for(tmp=0;tmp<11;tmp++)
        putchar(e_number[FOR][tmp]+0x30);
        printf("\"\r");
        delay_ms(2000);
        puts(massage);
        delay_ms(2);
        putchar(26);
        delay_ms(3000);
        }
      }
    دوستان خواهشاً کمک کنید اضطراریه
    برای آنکه کاری امکان پذیر گردد دیدگان دیگری لازم است، دیدگانی نو

    #2
    پاسخ : اشکال ارسال اس ام اس های متوالی با sim900

    کد رو که کامل نگذاشتید ولی شما مطمئن هستید که بعد از ارسال اول با توجه به اینکه مقدار for یک واحد افزایش پیدا میکنه ، باز هم شرط if صحیح هست ؟ یعنی باز هم آرایه e_number[FOR][12] مقدارش 2 هست؟
    نکته دیگه اینکه چون شما از مکانیزم دریافت کاراکتر از sim به منظور اطمینان از ارسال استفاده نکردین بهتره زمان 3000 میلی ثانیه رو بیشتر کنید

    دیدگاه


      #3
      پاسخ : اشکال ارسال اس ام اس های متوالی با sim900

      شرط if بعد از افزایش صحیح هستش مطمئن هستم
      و نمیخوام زمان ارسال ها زیاد باشن
      یعنی دنبال علت این موضوع هستم که چرا اس ام اس دوم ارسال نمیشه
      با پروتئوس هم تست کردم پورت سریال کد ها رو ارسال میکرد
      برای آنکه کاری امکان پذیر گردد دیدگان دیگری لازم است، دیدگانی نو

      دیدگاه


        #4
        پاسخ : اشکال ارسال اس ام اس های متوالی با sim900

        وقتی یک بار پیام ارسال شده معنیش اینه که دستورات درون شرط درست اجرا شدن . پس باید قسمتهایی از برنامه مثل متغیر e_number[FOR][12] که تغییر کردن رو چک کنید .
        من کل برنامه شما رو ندیدم به همین دلیل باید خودتون این قسمتها که تغییر میکنن رو چک کنید و اطمینان پیدا کنید. این خط هم که شماره جدید وارد میشه همینطور putchar(e_number[FOR][tmp]+0x30);

        به این دلیل گفتم زمان رو زیاد کنید چون ممکن هست زمانی که پیام ارسال میشه به هر دلیلی کمی طول بکشه . اگر در این زمان که شاید بیشتر از 3 ثانیه بشه شما دوباره دستورات جدید بفرستی احتمال خطا هست .به همین دلیل باید از دستورات دریافت کاراکتر استفاده میکردید تا به عنوان مثال با دریافت کاراکتر "k" از ok شدن ارسال اطمینان پیدا کنید.
        به هرحال با این شرایط به عنوان یک آزمایش زمان رو بیشتر کنید (مثلا" 10 ثانیه) تا اشکال کار رو پیدا کنید .

        دیدگاه

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