اطلاعیه

Collapse
No announcement yet.

رفع اشکال در ارسال عدد از لب ویو به میکرو (ارتباط سریال)

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

    رفع اشکال در ارسال عدد از لب ویو به میکرو (ارتباط سریال)

    با سلام
    با چه دستوری میتونم عددی رو که در لب ویو به کمک بلوک Number To Decimal String به صورت رشته به میکرو (atmega32) فرستادم رو به عدد تبدیل کنم؟
    در واقع باید دو تا عدد به عنوان ست پوینت رو از طریق لب ویو به میکرو بفرستم، مشکل اینجاست که اعداد دریافت شده از لب ویو رو میتونم رو lcd ببینم اما بلد نیستم اون رو از حالت رشته به عدد تبدیل کنم oo:
    کد:
    while (1)
       {
    
        if(rx_counter) {  
               // scanf("%2d",sp);
               // sp=getchar(); 
               // sp=sp-'0';
               // if(sp>8) PORTB.1=~PORTB.1;
                 
                data=getchar();
                lcd_putchar(data);
                delay_ms(500);
                get=toascii(data); 
                if(get>8) PORTB.1=~PORTB.1; 
          
                };         
    
       }
    یه سوال اساسی: ایا برای ارسال عدد به میکرو از بلوک مناسبی در لب ویو استفاده کردم؟

    #2
    پاسخ : رفع اشکال در ارسال عدد از لب ویو به میکرو (ارتباط سریال)

    با سلام
    در زبان c میتونید از دستور atoi استفاده کنید.
    int atoi (const char * str);. Convert string to integer
    The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

    دیدگاه


      #3
      پاسخ : رفع اشکال در ارسال عدد از لب ویو به میکرو (ارتباط سریال)

      به شکل زیر نوشتم، اما کدویژن ارور function argument #1 of type 'unsigned char' is incompatible with required parameter of type 'unsigned char رو داد
      کد:
      #include<stdlib.h>
      char sp;
      int a;
      while()
      {
      sp=getchar();
       a=atoi(sp);
       if(a>=40) PORTB.1=~PORTB.1;
      }
      نمی دونم چطوری از این دستور استفاده کنم


      دیدگاه


        #4
        پاسخ : رفع اشکال در ارسال عدد از لب ویو به میکرو (ارتباط سریال)

        با سلام
        در فرمت دستور ورودی از نوع پوینتر می باشد لذا
        a = atoi(&sp);
        رو جایگزین کنین.
        فک کنم حل بشه.
        The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

        دیدگاه


          #5
          پاسخ : رفع اشکال در ارسال عدد از لب ویو به میکرو (ارتباط سریال)

          دوستان سلام
          من برنامه رو به این شکل نوشتم،اما مشکلاتی داره که باعث شده گیج بشم oo:
          کد:
          while (1)
             {
          
              if(rx_counter) {  
                     
                      PORTB.0=~PORTB.0; 
                      data=getchar();
                      lcd_gotoxy(0,0);
                      lcd_putchar(data);  
                      a=atoi(&data);
                      sprintf(b,"%2d",a); 
                      lcd_gotoxy(0,1);
                      lcd_puts(b);
                      if(a>5){
                          PORTB.1=~PORTB.1; 
                          c=c+a;
                          sprintf(d,"%2d",c); 
                          lcd_gotoxy(5,1); 
                          };
                      delay_ms(500);
                      };         
          
             }
          مشکل اول: تبدیل کاراکتر به اینتیجر به درستی صورت میگیره و وقتی عدد بزرگتر از 5 رو میفرستم شرط برقرار میشه(PORTB.1 تاگل میشه) :biggrin: اما در سطر بعد عمل جع ونمایش روی lcd صورت نمیگیره!!!!! :angry:
          مشکل دوم: در هر بار اجرای حلقه اصلی فقط یک عدد تک رقمی دریافت میکنم، مثلا اگه عدد دو رقمی42رو توسط لب ویو بفرستم به جای اینکه عدد 42 رو در یافت کنم یکبار عدد 4 و سپس عدد 2 رو میگیرم !!!! در حالیکه من عدد 42 رو میخوام :angry: :angry:
          از بین دوستان کسی در این مورد تجربه ی نداشته؟؟ :cry: :cry:
          (البته این رو هم بگم که چون پروگرامر خرابه مجبور شدم پروتئوس رو به لب ویو متصل کنم و از این طریق برنامه هام رو تست کنم، امیدوارم این موضوع روی نتیجه هام تاثیری نذاره)

          دیدگاه


            #6
            پاسخ : رفع اشکال در ارسال عدد از لب ویو به میکرو (ارتباط سریال)

            با سلام
            من در شرط if شما تابعی برای نمایش روی lcd نمی بینم؟!
            اشکال دریافت تک تک اعداد هم برای اینه که شما از getchar استفاده می کنی، و این تابع بایت بایت اطلاعات رو می خونه، برای خوندن جمله باید کل رشته رو بگیرین با تابعی مثل gets
            The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

            دیدگاه


              #7
              پاسخ : رفع اشکال در ارسال عدد از لب ویو به میکرو (ارتباط سریال)

              من در شرط if شما تابعی برای نمایش روی lcd نمی بینم؟!
              هی وای من!!! عحب اشباهی کردم من
              برای خوندن جمله باید کل رشته رو بگیرین با تابعی مثل gets
              بله درست می فرمایید :applause: :applause:
              خوب به حمدالله کار من هم درست شد :wow:
              حسام خان، از کمک های بی شائبه تون کمال تشکر رو دارم :-bd

              دیدگاه


                #8
                پاسخ : رفع اشکال در ارسال عدد از لب ویو به میکرو (ارتباط سریال)

                خب شکر خدا ، ما هم خوشحالیم :wow: :wow: :wow: :wow: :wow:
                خواهش می شود.
                The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

                دیدگاه

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