اطلاعیه

Collapse
No announcement yet.

جداسازی اعداد از متن در C یا c++ برای میکرو AVR

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

    #46
    پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

    نوشته اصلی توسط flightsazan نمایش پست ها
    نه با ویرگول هم خطا می ده تو result ایستاده
    ویرگولم نباید باشه! هیچی بعدش لازم نیست

    دیدگاه


      #47
      پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

      اجرا شد ولی خالیه

      دیدگاه


        #48
        پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

        نوشته اصلی توسط flightsazan نمایش پست ها
        اجرا شد ولی خالیه
        قرار هم نبود چیزی نشون بده! این یک نمونس بقیشو باید خودت کامل کنی. این کد نه printf داره نه مکانیزم خروجی دیگه ای.

        دیدگاه


          #49
          پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

          واو درسته دقت نکردم ممنون
          این و اضافه کردم:
          printf("%.3f\n", Weight);

          حالا ببینم کد ویژن چکاره هست
          جدیدترین ویرایش توسط flightsazan; ۱۷:۲۱ ۱۴۰۰/۰۴/۱۰.

          دیدگاه


            #50
            پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

            تو کد ویژن با خطا واجه شدم اول باید char Buffer[20] رو اول کد اعلام نمایم
            بعد این کد رو نمیشناسه:sscanf
            ممنون

            دلیل: ادغام دو پست برای جلوگیری از اسپم

            با عرض ادب :
            با پاک کردن و اینکلود مجدد stdio ایراد به sscanf حل شد ولی خطای زیر همچنان باقی است ممنون
            cError: C:\Users\FLIGHTSAZAN-AIRSHIP\Documents\test1.c(93): must declare first in block 

            و روی این خط می ایسته:
            char Buffer[20] = "SS       235.23g";
            جدیدترین ویرایش توسط flightsazan; ۱۷:۴۶ ۱۴۰۰/۰۴/۱۰.

            دیدگاه


              #51
              پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

              نوشته اصلی توسط flightsazan نمایش پست ها
              تو کد ویژن با خطا واجه شدم اول باید char Buffer[20] رو اول کد اعلام نمایم
              بعد این کد رو نمیشناسه:sscanf
              ممنون

              دلیل: ادغام دو پست برای جلوگیری از اسپم

              با عرض ادب :
              با پاک کردن و اینکلود مجدد stdio ایراد به sscanf حل شد ولی خطای زیر همچنان باقی است ممنون
              cError: C:\Users\FLIGHTSAZAN-AIRSHIP\Documents\test1.c(93): must declare first in block 

              و روی این خط می ایسته:
              char Buffer[20] = "SS       235.23g";
              احتمال داره از اون ارورهای مسخره کدویژن باشه. فکر کنم باید تعریف متغیر ها رو ابتدای بلوک انجام بدید.

              دیدگاه


                #52
                پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

                این اضافه کردم ولی خطا همچنان باقی است ممنون
                unsigned char Buffer;

                دیدگاه


                  #53
                  پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

                  نوشته اصلی توسط flightsazan نمایش پست ها
                  این اضافه کردم ولی خطا همچنان باقی است ممنون
                  unsigned char Buffer;
                  فکر میکنم شما به قدر کافی مهارت زبان C ندارید و بهتره کمی روش کار کنید!
                  توی ارسال قبلی گفتم که تعریف Buffer رو ابتدای بلوک انجام بدید. نمیدونم هنوزم اینجوریه یا نه ولی قدیم یادمه باید حتما متغیر رو ابتدای بلوک معرفی میکردیم تا کدویژن ایراد نگیره. حالا بلوک چیه؟ هر چیزی بین این دوتا {} قرار بگیره میشه یک بلوک.

                  دیدگاه


                    #54
                    پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

                    ممنون درسته سواد سی بنده پایین هست
                    و سعی کردم طبق اطلاعات کامپایلر عمل کنم ممنون
                    الان سعی کردم عدد استخراجی رو به رشته قابل نمایش رو ال سی دی تبدیل کنم ولی کار درست نبود یا دستور تبدیل درست نیست بنابراین چیزی نمایش نمی دهد
                    //printf(lcd_Buffer,"%.3f%CA",Weight);[/FONT]    sprintf(lcd_buffer,"%.3f%CA",Weight);
                    lcd_clear();
                    puts(lcd_buffer);
                    lcd_puts(lcd_buffer);
                    delay_ms(250)

                    چیزی های به کدم اضافه میشه:
                    کد:
                    //printf(lcd_Buffer,"%.3f%CA",Weight);   
                     sprintf(lcd_buffer,"%.3f%CA",Weight);
                        lcd_clear();
                        puts(lcd_buffer);
                        lcd_puts(lcd_buffer);
                        delay_ms(250);
                    دلیل: ادغام دو پست برای جلوگیری از اسپم

                    فونت بودند بصورت دستی پاک کردم تا کد نوشته شده اینجا ثبت بشه ممنون
                    جدیدترین ویرایش توسط flightsazan; ۱۸:۰۳ ۱۴۰۰/۰۴/۱۱.

                    دیدگاه


                      #55
                      پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

                      نوشته اصلی توسط flightsazan نمایش پست ها
                      ممنون درسته سواد سی بنده پایین هست
                      و سعی کردم طبق اطلاعات کامپایلر عمل کنم ممنون
                      الان سعی کردم عدد استخراجی رو به رشته قابل نمایش رو ال سی دی تبدیل کنم ولی کار درست نبود یا دستور تبدیل درست نیست بنابراین چیزی نمایش نمی دهد
                      //printf(lcd_Buffer,"%.3f%CA",Weight);[/FONT]    sprintf(lcd_buffer,"%.3f%CA",Weight);
                      lcd_clear();
                      puts(lcd_buffer);
                      lcd_puts(lcd_buffer);
                      delay_ms(250)

                      چیزی های به کدم اضافه میشه:
                      کد:
                      //printf(lcd_Buffer,"%.3f%CA",Weight);    sprintf(lcd_buffer,"%.3f%CA",Weight);
                          lcd_clear();
                          puts(lcd_buffer);
                          lcd_puts(lcd_buffer);
                          delay_ms(250);
                      اون % بعد از f توی الگوی تابع sprintf چیه؟ اگر منظور خود کاراکتر % باشه باید ۲ تا % پشت سر هم بذارید

                      دیدگاه


                        #56
                        پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

                        سلام مجدد منظورتون این هست
                        کد:
                        [COLOR=#28282B][FONT=monospace]"%.3f%CA"[/FONT][/COLOR]
                        float هست

                        دلیل: ادغام دو پست برای جلوگیری از اسپم

                        با حذف آنها هم هنوز رو ال سی دی چیزی ندارم
                        کد:
                        %CA

                        دیدگاه


                          #57
                          پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

                          نوشته اصلی توسط flightsazan نمایش پست ها
                          سلام مجدد منظورتون این هست
                          کد:
                          [COLOR=#28282B][FONT=monospace]"%.3f%CA"[/FONT][/COLOR]
                          float هست

                          دلیل: ادغام دو پست برای جلوگیری از اسپم

                          با حذف آنها هم هنوز رو ال سی دی چیزی ندارم
                          کد:
                          %CA
                          منظورم این بود.
                          "%.3fCA"

                          دیدگاه


                            #58
                            پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

                            سه رقم اعشار منظور م بود جایی دیدم باید در کامپایلر هم برای دستور sprintf تغیراتی بدم اعمال کردم ولی ظاهرا تبدیل من درست نیست
                            کد:
                            [COLOR=#666666][FONT=Vazir]ای تغییر روش استفاده از  می*توانید sprintf() به مسیر Menu < Project > Configure بروید و تب C Compiler را انتخاب کنید.در این تب، منوی آبشاری (s)printf features را پیدا کنید و عملکردی که به آن نیاز دارید را انتخاب کنید. به عنوان پیشفرض، این گزینه*ها بر int و width قرار دارد. برای این گزینه تنها حروف «c، s، p، i، d، u، x، X و %» و «+» قابل نمایش است. فاصله و دیگر کاراکترها پشتیبانی نمی*شوند.[/FONT][/COLOR]
                            کد:
                            https://hadibanelectronic.com/mag/character-lcd-setup-tutorial-with-codevision-avr/

                            دیدگاه


                              #59
                              پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

                              نوشته اصلی توسط flightsazan نمایش پست ها
                              سه رقم اعشار منظور م بود جایی دیدم باید در کامپایلر هم برای دستور sprintf تغیراتی بدم اعمال کردم ولی ظاهرا تبدیل من درست نیست
                              کد:
                              [COLOR=#666666][FONT=Vazir]ای تغییر روش استفاده از  می*توانید sprintf() به مسیر Menu < Project > Configure بروید و تب C Compiler را انتخاب کنید.در این تب، منوی آبشاری (s)printf features را پیدا کنید و عملکردی که به آن نیاز دارید را انتخاب کنید. به عنوان پیشفرض، این گزینه*ها بر int و width قرار دارد. برای این گزینه تنها حروف «c، s، p، i، d، u، x، X و %» و «+» قابل نمایش است. فاصله و دیگر کاراکترها پشتیبانی نمی*شوند.[/FONT][/COLOR]
                              کد:
                              https://hadibanelectronic.com/mag/character-lcd-setup-tutorial-with-codevision-avr/
                              شما اصلا منظور منو متوجه نیستید!!! دارم میگم علامت % توی الگوی توابع printf معنی خاصی داره. اون % دومی که توی الگوش گذاشتید نباید باشه! اگر میخوایید خود % چاپ بشه باید از %% استفاده کنید

                              دیدگاه


                                #60
                                پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

                                نه متوجه شدم ان و گذاشتم حداقل یه کاراکتر a نمایش داده بشه الان کمی رو کد کار کردم وقتی result==0 قرار می دم 0 نشون می ده

                                دلیل: ادغام دو پست برای جلوگیری از اسپم

                                %f با % u و %c تعویض کردم چون رشته داریم ولی توفیقی نکرد
                                ممنون

                                دلیل: ادغام دو پست برای جلوگیری از اسپم

                                کد:
                                [FONT=Yekan]  result = sscanf(Buffer, "SS  %fg", &Weight);[/FONT]       if (result == 0)
                                //{
                                    //printf("%.3f",Weight);
                                    sprintf(lcd_buffer,"%u",Weight);
                                    
                                   // lcd_clear();
                                    puts(lcd_buffer);
                                    lcd_puts(lcd_buffer);
                                   // delay_ms(250);
                                  // Success
                                  //  return 0;
                                [FONT=Yekan]//}[/FONT]
                                صفر نشان داده می شود

                                دلیل: ادغام دو پست برای جلوگیری از اسپم

                                البته اضافه نمایم در پروتئوس تست می زنم کد ها.

                                دلیل: ادغام دو پست برای جلوگیری از اسپم

                                کاراکترهای کنترلی printf که مورد توجه قرار دادم:
                                کد:
                                [COLOR=#333333][FONT=IRANSans]کاراکترفرمت | نوع اطلاعات که باید به خروجی منتقل شود[/FONT][/COLOR][COLOR=#333333][FONT=IRANSans]%C :  یک کاراکتر
                                %d : اعداد صحیح دهدهی مثبت و منفی
                                %i  : اعداد صحیح دهدهی مثبت و منفی
                                %e : نمایش علمی عدد همراه با حرف e
                                %E : نمایش علمی عدد همراه با حرف E
                                %f : عدد اعشاری ممیز شناور
                                %g : اعداد اعشاری ممیز شناور
                                %G : اعداد اعشاری ممیز شناور
                                %O : اعداد مبنای ۸ مثبت
                                %S : رشته ای از کاراکترها ( عبارت رشته ای )
                                %U : اعداد صحیح بدون علامت ( مثبت )
                                %x : اعداد مبنای ۱۶ مثبت با حروف کوچک
                                %X : اعداد مبنای ۱۶ مثبت با حروف بزرگ
                                %p : اشاره گر
                                %n : موجب میشود تا تعداد کاراکترهایی که تا قبل ازاین کاراکتر به خروجی منتقل شده اند شمارش شده و در پارامتر متناظر با آن قرار گیرد .
                                [/FONT][/COLOR]
                                [COLOR=#333333][FONT=IRANSans]%% : علامت %
                                [/FONT][/COLOR]

                                دیدگاه

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