اطلاعیه

Collapse
No announcement yet.

مشکل با دریافت رشته از یوزارت صفر در مگا 64

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

    مشکل با دریافت رشته از یوزارت صفر در مگا 64

    با سلام مجدد خدمت اساتید گرامی

    برنامه ای در C با کدویژن برای در یافت رشته از یوزارت صفر در مگا 64 نیاز دارم ، لطفا توضیح بدین چطور عمل کنم .

    ممنون از لطف شما

    #2
    پاسخ : مشکل با دریافت رشته از یوزارت صفر در مگا 64

    مشکلت چیه عزیز؟
    پورت سریال رو با کدویزارد و در حالت وقفه فعال کن . بعد با تابع getchar هر وقت خواستی بخون. این در صورتیه که تنظیمات پورتت درست باشه و اندازه بافر پورت هم بیشتر از تعداد بایتهای دریافتی قبل از خوندن پورت باشه

    دیدگاه


      #3
      پاسخ : مشکل با دریافت رشته از یوزارت صفر در م&#1711

      ممنون از جواب
      وقفش فعاله امما مفهومش برام نا ملموسه که یعنی چی که با وقفه بخونم یا با تابع getchar ?? ، با یه getchar ساده که میخوام از pc به میکرو string ارسال کنم موقع در یافت انگار char به char در یافت میکنه مثل توابع خود فراخوان .

      مثل همین 4 خط دستور ساده ، هر کاراکتر با 250 میلی ثانیه تاخیر رو موقعیت 10و10 نشون داده میشن ، چطور بریزمشون تو آرایه رو نمی دونم .

      while (1)
      {
      simstr = getchar();

      sprintf(tmpstr,"%c",simstr);

      glcd_outtextxy(10,10,tmpstr);

      delay_ms(250);
      }

      اگر با یک مثال کمکم کنید ممنون میشم . چطور تابعی مثل getstring بنویسم براش ؟

      // در ضمن برنامه ای که با VB6 برا دریافت رشته یا حتی کاراکتر ارسالی از میکرو که مقادیر ثابت یا همان مقادیر گرفته شده از یوزارت باشن براش نوشتم که در یافتی ها رو تو لیست باکس add کنه رشته یا کاراکتر خالی اضافی میکنه . //

      دیدگاه


        #4
        پاسخ : مشکل با دریافت رشته از یوزارت صفر در مگا 64

        در هر صورت (با وقفه یا بدون وقفه) تابع getchar یه کاراکتر از پورت میخونه. تابع getstr هم از همین تابع استفاده میکنه اما تا وقتیکه که به کاراکترهای انتهای رشته برسه که معمولا 0x00 هست کارش رو ادامه میده

        دیدگاه


          #5
          پاسخ : مشکل با دریافت رشته از یوزارت صفر در مگا 64

          متاسفانه تابع getstr و جود خارجی ندارد ، لطفا یک نمونه برای من بنویسید . ممنون

          دیدگاه


            #6
            پاسخ : مشکل با دریافت رشته از یوزارت صفر در مگا 64

            در صورت فعال بودن وقفه یوزارت با ارسال هر کاراکتر روال وقفه اجرا میشه. توی این روال رجیستر UDR رو بخون و ذخیره کن. در آخر با کنار هم گذاشتن کاراکترهای خونده شده رشته رو درست کن.

            دیدگاه


              #7
              پاسخ : مشکل با دریافت رشته از یوزارت صفر در مگ

              آیا این جواب میده و درسته ؟

              .
              .
              .

              // USART0 Receiver interrupt service routine
              interrupt [USART0_RXC] void usart0_rx_isr(void)
              {
              char status,data;
              status=UCSR0A;
              data=UDR0;
              if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
              {
              rx_buffer0[rx_wr_index0++]=data;
              #if RX_BUFFER_SIZE0 == 256
              // special case for receiver buffer size=256
              if (++rx_counter0 == 0) rx_buffer_overflow0=1;
              #else
              if (rx_wr_index0 == RX_BUFFER_SIZE0) rx_wr_index0=0;
              if (++rx_counter0 == RX_BUFFER_SIZE0)
              {
              rx_counter0=0;
              rx_buffer_overflow0=1;
              }
              #endif
              }

              // خواندن از بافر و نوشتن در آرایه با مقدار مشخص

              if(i<40)
              {
              tmpstr[i]=UDR0;
              i++;
              }
              else
              rcc++;

              }

              .
              .
              .
              while (1)
              {
              getchar();

              delay_ms(100);

              if(rcc!=0)
              {
              for(i=0;i<40;i++)
              {
              glcd_outtextxy(1,1,tmpstr);
              rcc=0;
              }
              }

              delay_ms(250);
              }

              .................................................. .................................


              لینک دانلود فایل c :


              test-usart0-read-string.rar 2.4 K

              http://dl.awo.ir/tmp/test-usart0-read-string.rar


              در تست بنده که جواب نداد ، لطفا راهنمایی بفرمائین .

              دیدگاه


                #8
                پاسخ : مشکل با دریافت رشته از یوزارت صفر در مگا 64

                وقتی شما وقفه رو فعال میکنی و اطلاعات دریافتی رو اونجا میخونی دیگه نیاز به getchar نداری.

                دیدگاه


                  #9
                  پاسخ : مشکل با دریافت رشته از یوزارت صفر در م&#1711

                  بجواب نمیده ، شما تست کردینش ؟ جواب داد ؟

                  دیدگاه

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