اطلاعیه

Collapse
No announcement yet.

مشکل در یک دستور کتابخانه ff.h

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

    مشکل در یک دستور کتابخانه ff.h

    با سلام خدمت دوستان
    من یه فایل رو در mmc باز کردم و میخونمش فقط یه مشکلی دارم که وقتی فایل به انتها میرسه نمیدونم چه جوری برم اول فایل
    آنکس که بداند و بداند که بداند /، اسب شرف از گنبد گردون بجهاند
    آنکس که بداند و نداند که بداند / ، بيدارش نماييد که بسي خفته نماند
    آنکس که نداند و بداند که نداند / ، لنگان خرک خويش به مقصد برساند
    آنکس که نداند و نداند که نداند / ، در جهل مرکب ابدالدهر بماند

    #2
    پاسخ : مشکل در یک دستور کتابخانه ff.h

    دوست عزیز دستور (f_read(&file,buffer,n,&nbytes که برای خوندن تعداد بایتی مشخص از یک فایل هست دارای یک کانتری هست که تعداد بایت خونده شده رو مشخص میکنه مقدار این کانتر فقط با دستور colse فایل صفر میشه پس برای اینکه شما بتونید به ابتدای فایل برین باید ابتدا فایل رو با دستور (f_close(&file ببندید و مجددا فایل رو با دستور (f_open(&file,path,FA_READ باز کنید یعنی اینکه بعد از هر بار به پایان رسیدن فایل، فایل رو ببندید و باز کنید تا کانتر بایت به ابتدای فایل اشاره کنه.

    البته من فقط از این روش جواب گرفتم اگه دوستان روش دیگری سراغ دارن دوستمون رو راهنمایی کنند.
    [glow=red,2,300]گرد هم آمدن شروع است.با هم ماندن پيشرفت است.با هم کار کردن موفقيت است.[/glow]
    [img width=98 height=100]http://s3.picofile.com/file/7407857311/icon3.png[/img]

    دیدگاه


      #3
      پاسخ : مشکل در یک دستور کتابخانه ff.h

      سلام

      یه دستور هست f_lseek ،با این پوینتر خوندن بایت رو میتونی جابه جا کنی و هر جا میخوای ببری( نه بیشتر از حجم فایل)

      یه نکته اینکه قبل از خوندن بایت سایزش رو نیگا کن که بیشتر از اون f_read نکنی
      اگه اونم نمیدونی بگو که بگم
      پشت به کنکور ، رو به سربازی...

      دیدگاه


        #4
        پاسخ : مشکل در یک دستور کتابخانه ff.h

        سلام
        دوستان راه اولی که پیشنهاد شد خوبه و عالیه اما ممکنه من زمان کافی برای بستن و باز کردن نداشته باشم در ضمن یه سوال دیگه آیا flag یا متغیری هست که اعلام کنه فایل به انتها رسیده؟
        در مورد راه دوم اگر میشه قشنگ توضیح بدید تا متوجه بشم؟
        آنکس که بداند و بداند که بداند /، اسب شرف از گنبد گردون بجهاند
        آنکس که بداند و نداند که بداند / ، بيدارش نماييد که بسي خفته نماند
        آنکس که نداند و بداند که نداند / ، لنگان خرک خويش به مقصد برساند
        آنکس که نداند و نداند که نداند / ، در جهل مرکب ابدالدهر بماند

        دیدگاه


          #5
          پاسخ : مشکل در یک دستور کتابخانه ff.h

          نوشته اصلی توسط king_of_hearts90
          سلام
          دوستان راه اولی که پیشنهاد شد خوبه و عالیه اما ممکنه من زمان کافی برای بستن و باز کردن نداشته باشم در ضمن یه سوال دیگه آیا flag یا متغیری هست که اعلام کنه فایل به انتها رسیده؟
          در مورد راه دوم اگر میشه قشنگ توضیح بدید تا متوجه بشم؟
          ینی چی زمان کافی برا بستن و باز کردن نداری؟ oo:
          ببین وقتی فایل تا آخر میخونی اگه دوباره از f_read استفاده کنی، دستور مقداری غیر صفر رو برمیگردونه (باید اینجوری باشه، من همیشه اول سایزشو نگا میکنم و به همون اندازه f_read استفاده می کنم)
          پشت به کنکور ، رو به سربازی...

          دیدگاه


            #6
            پاسخ : مشکل در یک دستور کتابخانه ff.h

            دستور
            کد:
            f_lseek (FIL*, DWORD);
            دیگه نیازی به باز کردن و بستن نداره و مثلا اگه بخوای پوینتر خوندن رو بیاری اول فایل، این شکلی میشه

            کد:
            FIL ftest;   // file objects
            .
            .
            .
            f_lseek (ftest,0);
            در مورد خوندن سایز فایل هم


            کد:
            FATFS fs;   // Work area (file system object) for logical drive
            FIL ftest;   // file objects
            FILINFO file_info;
            DIR dir1;
            unsigned int bw;
            unsigned char lname;
            unsigned long Size;
            char filename[13]="music/1.mp3";
            char buffer[];
            
            
            f_mount(0,&fs);
            
            f_open(&ftest,filename, FA_READ );
             
             f_stat(filename,&file_info);
             Size=file_info.fsize;
            
            
            f_read(&ftest, Buffer,Size, &bw);
            
            
            f_lseek (&ftest,0);// move pointer to the first byte
            f_read(&ftest, Buffer,Size, &bw);
            .
            .
            .
            f_close(&ftest);
            خوبه؟
            البته اینی که نوشتم برا حالتیه که سایز کوچیک باشه ،که بشه همشو یه جا ریخت رو بافر، وگرنه که باید با حلقه تیکه تیکه بخونیشو و تعداد بایتای خونده شده رو با یه کانتر بشمری و با Size مقایسه کنی!

            یه سوال برا چی میخوای یه فایلو پشت سر هم بخونی؟ oo:



            پشت به کنکور ، رو به سربازی...

            دیدگاه


              #7
              پاسخ : مشکل در یک دستور کتابخانه ff.h

              برا تابلو روان همچین کاریو میخوام بکنم
              آنکس که بداند و بداند که بداند /، اسب شرف از گنبد گردون بجهاند
              آنکس که بداند و نداند که بداند / ، بيدارش نماييد که بسي خفته نماند
              آنکس که نداند و بداند که نداند / ، لنگان خرک خويش به مقصد برساند
              آنکس که نداند و نداند که نداند / ، در جهل مرکب ابدالدهر بماند

              دیدگاه


                #8
                پاسخ : مشکل در یک دستور کتابخانه ff.h

                پس کلی وخ داری ببندیو وا کنی :biggrin: حالا 5 میلی ثانیم طول بکشه ، اگه 200 فریم بر ثانیه بخوای نمایش بدی (که نمیدی ) یه فریم عقب میفتی

                تازه اگه بخوای پش سر هم فایلو واکنی بخونی که آخر فیلمت میچسبه به اولش! من که برا تابلو 2 ثانیه بین هر فایل فاصله گذاشتم، ال ای دیام یه نفسی می کشن :mrgreen:
                پشت به کنکور ، رو به سربازی...

                دیدگاه


                  #9
                  پاسخ : مشکل در یک دستور کتابخانه ff.h

                  آره میدونم وقت دارم و مشکلی ایجاد نمیشه
                  فقط یه سوال ؟ حجم فایلم محدودیت داره و سوال دیگه اینکه تو تابع f_read بافر مورد استفاده هم محدودیت داره؟
                  آنکس که بداند و بداند که بداند /، اسب شرف از گنبد گردون بجهاند
                  آنکس که بداند و نداند که بداند / ، بيدارش نماييد که بسي خفته نماند
                  آنکس که نداند و بداند که نداند / ، لنگان خرک خويش به مقصد برساند
                  آنکس که نداند و نداند که نداند / ، در جهل مرکب ابدالدهر بماند

                  دیدگاه


                    #10
                    پاسخ : مشکل در یک دستور کتابخانه ff.h

                    بازم سلام

                    من یه بار حساب کردم ،شما اگه بخوای 16000 فریم هم نمایش بدی، حجم فایل برا یه تابلوی گنده به 10 مگ هم نمیرسه! پس از این لحاظ محدودیت نداری
                    ولی اگه کلا میپرسی : برای FAT12/16 (یا همون FAT) یه رقم گیگا بایتی، فک کنم 4 گیگ بود! دقیق نمیدونم
                    برای FAT32 که دیگه بیشتر ، شما BLUE RAY بریز رو رم :mrgreen:

                    در مورد سوال دوم ، فقط یه سوال بود ، جواب نمیدم :mrgreen:

                    تو تئوری که فکنم شمارندش unsigned int باشه ینی تا 65 هزار و خورده ای میره (دقیق نمیدونم، من بیشتر از 600 و خورده ای لازمم نشده) ولی در عمل باید به SRAM میکروت نگا کنی .اگه 16مگا هست که خوب ، بافر رو عملا نمیتونی بزرگ بگیری . نیازی هم نیست. شما 128 تا 128 تا بخون ، هیچ مشکلی هم پیش نمیاد.
                    ولی یه نکته که خیلی مهم هست اینه که حتما حجم بافر رو مشخص کن مثلا
                    کد:
                    char buffer[129];
                    از اونجا که میکرو (بعد کامپایل برنامه و پروگرم شدن) عملا مدیریتی روی SRAM نداره، ممکنه محتویات یکی از این رشته ها روی یکی دیگه کپی بشه! دیدم که دارم میگم ها oo:
                    می خواستم MP3 player درس کنم که این قضیه :angry: :angry:
                    پشت به کنکور ، رو به سربازی...

                    دیدگاه


                      #11
                      پاسخ : مشکل در یک دستور کتابخانه ff.h

                      دستت درد نکنه توضیحاتت واقعا کامله
                      من برای یه تابلو 32*144 باید یه بافر 576 بایتی داشته باشم و دارم از مگا 128 استفاده میکنم . پس نباید مشکلی داشته باشم؟
                      آنکس که بداند و بداند که بداند /، اسب شرف از گنبد گردون بجهاند
                      آنکس که بداند و نداند که بداند / ، بيدارش نماييد که بسي خفته نماند
                      آنکس که نداند و بداند که نداند / ، لنگان خرک خويش به مقصد برساند
                      آنکس که نداند و نداند که نداند / ، در جهل مرکب ابدالدهر بماند

                      دیدگاه


                        #12
                        پاسخ : مشکل در یک دستور کتابخانه ff.h

                        بیخیال بابا مگا 128 برا چی همین شماهایین avr انقد شاخ می کنین
                        من با 32 درس کردم تا با مگا 16 میشد! :mrgreen: گفتم 1000ولش کن تومن تو قیمت تابلو تاثیر نداره

                        144*32 پس 4 تا سطر داری، 4 تا 74hc573 بذار (آی سی لچ هست ) بعدشم دیتا رو 4 بایت 4 بایت بخون بریز رو اینا و بعد یه شیفت
                        با 144 با تکرار دیتای کل تابلو لود میشه

                        اگه می خوای پول به مگا 128 بدی برو رو arm مثلا sam7x256 کار کن سرعتت خیلی بالا تره ! :nice: تابلو های 8 رنگ و بزرگ رو هم راحت میتونی را بندازی
                        پشت به کنکور ، رو به سربازی...

                        دیدگاه


                          #13
                          پاسخ : مشکل در یک دستور کتابخانه ff.h

                          دوست عزیز سلام
                          دو تا سوال دارم
                          1- این سایز فایل رو از کدوم متغیر بخونم؟
                          2- تابلومو راه انداختم و کار میکنه فقط گاهی اوقات هنگ میکنه و انگار mmc اطلاعاتو تو اون لحظه نمیتونه بده و چند لحظه یعد دوباره درست میشه . مشکل از چی میتونه باشه؟
                          البته از جایی که هنگ کرده دوباره راه نمیفته ها از چند فریم بعد شروع میکنه
                          آنکس که بداند و بداند که بداند /، اسب شرف از گنبد گردون بجهاند
                          آنکس که بداند و نداند که بداند / ، بيدارش نماييد که بسي خفته نماند
                          آنکس که نداند و بداند که نداند / ، لنگان خرک خويش به مقصد برساند
                          آنکس که نداند و نداند که نداند / ، در جهل مرکب ابدالدهر بماند

                          دیدگاه


                            #14
                            پاسخ : مشکل در یک دستور کتابخانه ff.h

                            سامولیک
                            نوشته اصلی توسط king_of_hearts90
                            دوست عزیز سلام
                            دو تا سوال دارم
                            1- این سایز فایل رو از کدوم متغیر بخونم؟
                            2- تابلومو راه انداختم و کار میکنه فقط گاهی اوقات هنگ میکنه و انگار mmc اطلاعاتو تو اون لحظه نمیتونه بده و چند لحظه یعد دوباره درست میشه . مشکل از چی میتونه باشه؟
                            البته از جایی که هنگ کرده دوباره راه نمیفته ها از چند فریم بعد شروع میکنه
                            این سایز کودوم فایلو؟ oo:

                            مطمئنی خطای کلاک شیفت رجیسترا قط و وصل نمیشه؟! چون اگه فریمای بعدی رو نشون میده پس اونا رو قبلا خونده!
                            یه احتمال دیگه هم میتونه مشکل در لود عکس تو برنامه ی تبدیل کننده ی عکس به فایلت باشه!
                            ببینم این مشکل تو یه فریم مشخص اتفاق میفته یا رندمه؟

                            پشت به کنکور ، رو به سربازی...

                            دیدگاه


                              #15
                              پاسخ : مشکل در یک دستور کتابخانه ff.h

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

                              دیدگاه

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