اطلاعیه

Collapse
No announcement yet.

در خواست بررسی کد یک تابع

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

    در خواست بررسی کد یک تابع

    سلام خدمت همه دوستان!
    از اون جایی که نشد من یک کاری طبق روال معمولش طی کنم و نتیجه مطلوبم برسم این تاپیک را زدم!
    تابع زیر رو واسه ارسال sms در sim800 نوشتم. قبلا جواب میداد و هیچ مشکلی نداشت اما الان فقط بار اولی که فراخوانی میشه پیام را میفرسته! و بار دوم دگ جواب نمیده.
    روال برنامه به این صورته که من یک دستور را توسط sms به میکرو میفرستم و میکرو کد مربوطه را اجرا میکنه ، بعضی از این دستورات پیام تاییدیه برگشتی دارند!
    حالا اگه دستوری که میفرستم تاییدیه نداشته باشه خیلی عالی اجرا میشه ولی اگه پیام تاییدیه داشته باشه تابع زیر فقط در اولین فراخوانی کار خودش رو انجام میده و دفعات بعدی اصن بیخیاله!
    به نظرتون کدش مشکلی داره؟؟؟
    کد:
    void sms(char *number,char *mess)
    { 
        printf("AT+CMGS=%c%s%c%c",J_COT,number,J_COT,ENT);delay_ms(1800);
        printf("%s%c%c",mess,13,ctrl_z);delay_ms(1500);         
        for(count=0;buffer[count-2]!='O';count ++){ buffer[count]=getchar();}strcpy(buffer,"");
    }

    #2
    پاسخ : در خواست بررسی کد یک تابع

    نوشته اصلی توسط hosseinghaheri نمایش پست ها
    به نظرتون کدش مشکلی داره؟؟؟
    کد:
    void sms(char *number,char *mess)
    {
    printf("AT+CMGS=%c%s%c%c",J_COT,number,J_COT,ENT); delay_ms(1800);
    printf("%s%c%c",mess,13,ctrl_z);delay_ms(1500);
    for(count=0;buffer[count-2]!='O';count ++){ buffer[count]=getchar();}strcpy(buffer,"");
    }
    میتونه داشته باشه. این بستگی به بخش های دیگه کدتون هم داره
    مثلا همین خط آخر شرط حلقه همیشه دو خونه از خود آرایه عقبتر رو داره بررسی میکنه.
    دیگه که تا وقتی مقدارش بیشتر از یک نشده به مکان هایی منفی از آرایه buffer که وجود نداره دسترسی می خواد
    دیگه اینکه شرط حلقه وابسته به یافتن کاراکتر 0 هستش که شاید در buffer وجود نداشته باشه پس این حلقه بی پایان میتونه رفتارهای عجیبی از خودش نشون بده
    بقیه بخش های درگیر در این کدها رو هم بزارین تا بهتر بشه در این باره نظر داد
    If the wind will not serve, take to the oars

    دیدگاه


      #3
      پاسخ : در خواست بررسی کد یک تابع

      نوشته اصلی توسط ASHIT AXAR نمایش پست ها
      میتونه داشته باشه. این بستگی به بخش های دیگه کدتون هم داره
      مثلا همین خط آخر شرط حلقه همیشه دو خونه از خود آرایه عقبتر رو داره بررسی میکنه.
      دیگه که تا وقتی مقدارش بیشتر از یک نشده به مکان هایی منفی از آرایه buffer که وجود نداره دسترسی می خواد
      دیگه اینکه شرط حلقه وابسته به یافتن کاراکتر 0 هستش که شاید در buffer وجود نداشته باشه پس این حلقه بی پایان میتونه رفتارهای عجیبی از خودش نشون بده
      بقیه بخش های درگیر در این کدها رو هم بزارین تا بهتر بشه در این باره نظر داد
      اخه این کد به صورت سری اجرا میشه و هیچ اکشنی باهاش پارالل نشده! از طرفی برنامه تک ترد هست! پس مشکل نمی تونه از قسمت های دگ باشه.
      ایندکس منفی بافر هم درسته که منطقی به نظر نمیاد و به هر حالا قبلا جواب داده!
      شرط حلقه منتظر کاراتر O میمونه نه عدد 0 !
      اگه با ماژول های سیم کام کار کرده باشید منظورم رو متوجه میشید!
      ماژول وقتی اس ام اس را ارسال میکنه در اخر OK میفرسته و منم با خوندن O متوجه میشم که پیام ارسال شده پس حلقه بی نهایت نیست!
      از طرفی همون طور که مشاهده میکنید کد به صورت یک تابع تقریبا مستقل هست پس با کد های دگ درگیری نداره!

      دیدگاه

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