اطلاعیه

Collapse
No announcement yet.

[آموزش] نحوه استفاده از کتابخانه pff.h

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

    پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

    با سلام

    بالاخره علت اینکه نمی توانستیم بنویسیم را کشف کردم :wow: :wow: :wow: :wow:
    همان طور که میدانید هر کلاستور 512 بایت است برای اینکه بتوان داده را نوشت تعداد بایت ها باید 512 بایت باشد مثلا اگر داده ما 12 بایت باشد ما بایستی 500 بایت خالی را هم با آن بنویسیم تا عملیات نوشتن کامل شود

    کد:
    unsigned char buffer[42] =" Sabalan Electronic\r\n Shapour j_Shirin\r\n"; 
    
    --
    --
    --
    --
    
    
      /* Write data to the file */
      lcd_clear();
      lcd_putsf("Write file");  
      res = pf_write(buffer, sizeof(buffer), &w);	  // Write a line to the file 
      display_result(res); 
      delay_ms(1500);
      
      
      for (;;) 
      {   
        for (i=0;i<=sizeof(buffer);i++) buffer[i]=0;
        res = pf_write(buffer, sizeof(buffer), &w);	  // Write a line to the file 
        if(res) break;      
    	}
    در این مثال دیتا با طول 42 کاراکتر است بعد از نوشتن آن داخل بافر با " 0 " پر میکنم وعمل نوشتن تا آخر کلاستور ادامه میدهم با رسیدن به آخریب بایت بصورت اتوماتیک دیتاها نوشه میشود وفایل را میبندد

    الان دیر وقت است تا به نتیجه رسیدم گفتم اطلاع رسانی بکنم باز هم روی آن کار میکنم شما هم اگر توانستید امتحان کنید

    دیدگاه


      پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

      خوشحالم که مشکلی با این تابع ندارید
      من قبلا هم گفته بودم که توی فایل بیشتر از 500 بایت نمیشه نوشت که فکر کنم 512 درست باشه .
      مثلا اگر داده ما 12 بایت باشد ما بایستی 500 بایت خالی را هم با آن بنویسیم تا عملیات نوشتن کامل شود
      البته این گفته شما را قبول ندارم و توی همون مثال 4 که گذاشته بودم من کمتر از 20 بایت می نوشتم و کاملا درست بود .
      ولی به هر حال از اینکه کارتون راه افتاد خوشحالم .

      دیدگاه


        پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

        نوشته اصلی توسط Shapour-Ardebil
        با سلام

        بالاخره علت اینکه نمی توانستیم بنویسیم را کشف کردم :wow: :wow: :wow: :wow:
        همان طور که میدانید هر کلاستور 512 بایت است برای اینکه بتوان داده را نوشت تعداد بایت ها باید 512 بایت باشد مثلا اگر داده ما 12 بایت باشد ما بایستی 500 بایت خالی را هم با آن بنویسیم تا عملیات نوشتن کامل شود
        شما هم اگر توانستید امتحان کنید
        سلام
        منم تست کردم با 512 تا درست میشه ولی تابع pf_write وقتی طول بافر رو 512 میزنم 1 برمیگردونه ولی مینویسه ( فقط توی پروتئوس )
        و روی برد واقعی کلا هنوز من نتونستم بنویسم :sad:
        باز هم تست میکنم ببینم چی میشه
        درایور شبکه و nRF24L01
        کاتالوگ محصولات
        کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
        شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
        فروش اسيلوسکوپ GWinstek GOS-630FC

        دیدگاه


          پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

          سلام منم به نوبه خودم روشی برای کار با mmc درproteuse میگم :
          1)یک فایل خالیzip(نهrar)بانرم افزار winrar درست میکنید(که با کلیک راست کردن ورفتن به newمیجورینش)
          2)یک فایل مثلاtxtبا notepad درست میکنید وانو ذخیره میکنید
          3)نرم افزار winimage رو باز میکنید و new رو میزنید بعد ok رومیزنید
          4)از تپ image گزینه inject رو میزنید ودر پایین پنجره باز شده نوع اونو allانتخاب میکنید
          5)فایل txt که قبلاذخیره کردینو انتخاب کرده وتمام.
          6)درپایان save as میکنید توی فایل zip که قبلا انو هم ذخیره کرده بودین.
          یادتو نره موقع تست نام فایل txt رو توی برنامه نویسی بنویسید. :wow: :applause:

          دیدگاه


            پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

            نوشته اصلی توسط Shapour-Ardebil
            با سلام

            بالاخره علت اینکه نمی توانستیم بنویسیم را کشف کردم :wow: :wow: :wow: :wow:
            همان طور که میدانید هر کلاستور 512 بایت است برای اینکه بتوان داده را نوشت تعداد بایت ها باید 512 بایت باشد مثلا اگر داده ما 12 بایت باشد ما بایستی 500 بایت خالی را هم با آن بنویسیم تا عملیات نوشتن کامل شود

            کد:
              
              for (;;) 
              {   
                for (i=0;i<=sizeof(buffer);i++) buffer[i]=0;
                res = pf_write(buffer, sizeof(buffer), &w);	  // Write a line to the file 
                if(res) break;      
            	}
            سلام
            آقا شما آمدید توی این قسمت کد بافر رو که قبلا دیتا بوده 0 کردید ( تا اینجا OK )
            بعد آمدید عمل نوشتن رو توی for بی نهایت انجام دادید و گفتید اگر res برابر 1 شد بیاد بیرون
            خب این 1 شدن مگه جز خطا ها نیست؟!
            یعنی چی 1 شد بیا بیرون؟!!!
            میشه این قسمتو توضیح بدید
            درایور شبکه و nRF24L01
            کاتالوگ محصولات
            کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
            شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
            فروش اسيلوسکوپ GWinstek GOS-630FC

            دیدگاه


              پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

              :wow:
              بالاخره منم تونستم روی Micro SD واقعی در عمل بنویسم
              از همون تکنیک 512 بایت تا آخر کلاستر استفاده کردم ولی بازم نشد
              آمدم بعد از نوشتن خوندم دیدم داره درست میخونه و Micro SD رو گذاشتم روی PC دیدم بله حالا نوشته
              بعد متوجه شدم بعد از نوشتن باید یه بار درایو Init بشه
              همین که بعد از نوشتم درایو رو Init میکنم مینویسه ( یا بهتره بگم نوشته ها ذخیره میشن )
              بعد گفتم شاید ربطی به 512 تا نداشته باشه و حذفش کردم از برنامه و بعد از نوشتن یه بار درایو رو Init کردم و بستم
              اما زمان اجرا روی برد بعد از نوشتن و Close شدن دیگه Init مقدار 0 برنمیگردوند و توی while گیر میکرد
              خلاصه اینطوری شد که این جواب داد
              برنامه در کل اینطوری شد :

              کد:
              #include <mega32.h>
              
              // Alphanumeric LCD functions
              #include <alcd.h>
              #include <delay.h>
              #include <stdio.h>
              #include "SD_Driver/mmc.c"   
              #include "SD_Driver/pff.c"
              #define xtal 8000000
              
              // Declare your global variables here
              //#define BUFFER_SIZE 512
              
              FATFS Fs;
              WORD w_br;
              
              unsigned char MyBuffer[6] = {'B','A','S','T','A','M'};
              unsigned char zBuffer[2] = {0} ;
              FRESULT _result;
              WORD WriteIndex;
              
              void main(void)
              {
              // Declare your local variables here
              char buffer[12];
              unsigned char i=0;
              
              
              lcd_init(16);
              lcd_gotoxy(1,0);
              lcd_putsf("Write Micro SD");
              lcd_gotoxy(1,1);
              lcd_putsf("PFF Library");
              delay_ms(1000);
              lcd_clear();
              ////////////Write to SD/////////
              
              lcd_clear();
              lcd_putsf("Init Drive");
              while(disk_initialize()!=FR_OK) delay_ms(100);
              lcd_putsf("-->OK");
              delay_ms(1000);
              
              lcd_clear();
              lcd_putsf("OPEN Drive");
              while(pf_mount(&Fs)!=FR_OK) delay_ms(100);
              lcd_putsf("-->OK");
              delay_ms(1000);
              
              
              lcd_clear();
              lcd_putsf("Open File");
              while(pf_open("Bastam.txt")!=FR_OK) delay_ms(100);
              lcd_putsf("-->OK");
              delay_ms(1000);
              
              
              lcd_clear();
              lcd_putsf("LSeek File");
              while(pf_lseek(0)!=FR_OK) delay_ms(100);
              lcd_putsf("-->OK");
              delay_ms(1000);
              
              
              lcd_clear();
              lcd_putsf("Write File");
              while ( pf_write(&MyBuffer,6, &WriteIndex));
              delay_ms(100);
              lcd_putsf("-->OK");
              delay_ms(1000);
              
              lcd_clear();
              lcd_putsf("Write Ziro");
              for ( ; ; )
                {
                  if ( pf_write(&zBuffer,2, &WriteIndex) ) break;
                }
              lcd_putsf("-->OK");
              delay_ms(1000);
              
              
              lcd_clear();
              lcd_putsf("CLOSE Drive");
              while(pf_mount(0)!=FR_OK) delay_ms(100);
              lcd_putsf("-->OK");
              delay_ms(1000);
              
              
              ////////////////////////////////
              
              lcd_clear();
              lcd_putsf("Init Drive");
              while(disk_initialize()!=FR_OK) delay_ms(100);
              lcd_putsf("-->OK");
              delay_ms(1000);
              
              
              lcd_clear();
              lcd_putsf("CLOSE Drive");
              while(pf_mount(0)!=FR_OK) delay_ms(100);
              lcd_putsf("-->OK");
              delay_ms(1000);
              
              
              /////////////////////////////
              
              
              while (1)
                 {
                 // Place your code here
              
                 }
              }
              دوستاد دیگه هم تست کنن ببینن دستاوردهای من درسته یا نه
              ممنون از همه
              درایور شبکه و nRF24L01
              کاتالوگ محصولات
              کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
              شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
              فروش اسيلوسکوپ GWinstek GOS-630FC

              دیدگاه


                پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                با سلام
                فکر میکتم هیچکس این توضیحاتی که در پست قبل دارم رو نخونده !!!!!!!!
                همونجا هم عرض کردم
                4 - شروع و پایان نوشتن باید در یک سکتور باشد
                پس تا وقتی که دستور رایت رو در همان کلاستر دادید عملیات رایت امجام میشه در غیر اینصورت نه

                به همین سادگی :nice:
                تجربه معلم خشنی هست اول امتحان میگیره بعد درس میده !!!
                به دلیل برخی مشکلات بوجود اماده دیگه امکان ادامه فعالت در این انجمن مقدور نیست.

                دیدگاه


                  پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                  نوشته اصلی توسط Shapour-Ardebil
                  با سلام
                  همان طور که میدانید هر کلاستور 512 بایت است برای اینکه بتوان داده را نوشت تعداد بایت ها باید 512 بایت باشد مثلا اگر داده ما 12 بایت باشد ما بایستی 500 بایت خالی را هم با آن بنویسیم تا عملیات نوشتن کامل شود
                  دوست من کار تابع
                  کد:
                  pf_write(0, 0, &bw);
                  دقیقا همینه
                  نیازی نست همه اون 512 تا رو بنویسید فقط باید بعد از اتمام نوشت تابع رایت رو به به صورت فوق با مقادیر 0 فراخانی کنید

                  به همین سادگی :nice:
                  تجربه معلم خشنی هست اول امتحان میگیره بعد درس میده !!!
                  به دلیل برخی مشکلات بوجود اماده دیگه امکان ادامه فعالت در این انجمن مقدور نیست.

                  دیدگاه


                    پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                    نوشته اصلی توسط POLESTAR
                    دوست من کار تابع
                    کد:
                    pf_write(0, 0, &bw);
                    دقیقا همینه
                    نیازی نست همه اون 512 تا رو بنویسید فقط باید بعد از اتمام نوشت تابع رایت رو به به صورت فوق با مقادیر 0 فراخانی کنید

                    به همین سادگی :nice:
                    خب آقا من این کارو میکنم خطا برمیگردونه ولی باز هم الان تست میکنم خبر میدم

                    در باره اون چیزی که فرمودید من خوندم ولی خب متوجه منظورتون نشدم ( ابتدایی توضیح دهید ما هم متوجه شیم )

                    آقای اسدی عزیز من همون برنامه بالا رو برداشتم و فقط جای اون For که 0 مینوشتم خطی که شما گفتیدو نوشتم
                    نه توی پروتئوس و نه روی برد اصلی جواب نمیده
                    در جواب res رو هم 0x01 برمیگردونه
                    به نظر شما ایرادش چییه؟!!!
                    درایور شبکه و nRF24L01
                    کاتالوگ محصولات
                    کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
                    شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
                    فروش اسيلوسکوپ GWinstek GOS-630FC

                    دیدگاه


                      پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                      دوستان یه مشکل دیگه
                      من مثلا دما رو میخوام روی SD ذخیره کنم
                      SD رو Init میکنم و شروع میکنم به نوشتن
                      مینویسم تا 512 بایت کلاستر اول پر میشه
                      بعد دیگه نمیدونم چطور میشه رفت کلاستر بعدی و بتونم بقیه نوشتن رو ادامه بدم و کلا دیگه توی While نوشتن گیر میکنه
                      خودش اتوماتیک نمیره کلاستر بعدی و شروع کنه به نوشتم بقیه دیتا؟!
                      کلا چکار باید بکنم؟!!!!
                      درایور شبکه و nRF24L01
                      کاتالوگ محصولات
                      کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
                      شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
                      فروش اسيلوسکوپ GWinstek GOS-630FC

                      دیدگاه


                        پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                        دوستان یه مشکل دیگه
                        من مثلا دما رو میخوام روی SD ذخیره کنم
                        SD رو Init میکنم و شروع میکنم به نوشتن
                        مینویسم تا 512 بایت کلاستر اول پر میشه
                        بعد دیگه نمیدونم چطور میشه رفت کلاستر بعدی و بتونم بقیه نوشتن رو ادامه بدم و کلا دیگه توی While نوشتن گیر میکنه
                        خودش اتوماتیک نمیره کلاستر بعدی و شروع کنه به نوشتم بقیه دیتا؟!
                        کلا چکار باید بکنم؟!!!!
                        من در برنامه چند تا فایل دارم که هر وقت تا 500 بایت توی فایل اولی نوشتم بقیه دیتاها رو توی فایل با اینکس بعدی می نویسم ( بازش می کنم و بقیه روال نوشتن ) و همینطوری جلو می رم ....
                        برای خوندن هم چون می دونم دیتایی که می خوام بخونم چندمیه می روم مستقیم سراغ همون فایل و اون رو باز می کنم و دیتاهاش رو از اول تا آخر می خونم بعد دیتای خودم رو از توش درمیارم .

                        دیدگاه


                          پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                          نوشته اصلی توسط داریوش عباسی
                          من در برنامه چند تا فایل دارم که هر وقت تا 500 بایت توی فایل اولی نوشتم بقیه دیتاها رو توی فایل با اینکس بعدی می نویسم ( بازش می کنم و بقیه روال نوشتن ) و همینطوری جلو می رم ....
                          برای خوندن هم چون می دونم دیتایی که می خوام بخونم چندمیه می روم مستقیم سراغ همون فایل و اون رو باز می کنم و دیتاهاش رو از اول تا آخر می خونم بعد دیتای خودم رو از توش درمیارم .
                          خب آره ولی روشش این نیست
                          برای دیتا لاگر نمیشه که من مثلا 4GB رو پر کنم از n تا فایل 512 بایتی
                          بعد همینطور یکی یکی بنویسه ببنده بره بعدی
                          میخوام یه فایل رو باز کنه و تا میتونه همینطور شروع کنه به نوشتن و بعد ببنده ( مثلا 2 سال مدار همینطور کار کنه )
                          به نظر شما میشه با pff همچین کارایی کرد؟!!!!
                          درایور شبکه و nRF24L01
                          کاتالوگ محصولات
                          کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
                          شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
                          فروش اسيلوسکوپ GWinstek GOS-630FC

                          دیدگاه


                            پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                            شما هنوز درگیر pf_write هستید =))
                            بیخیال نوشتن با pff بشید اصلا منطقی نیست برای نوشتن از pff استفاده کنید
                            میشه همون ff را با کم کردن توابع اضافی به مقدار چشمگیری حجمش را کاهش داد
                            امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

                            دیدگاه


                              پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                              نوشته اصلی توسط Abbas Sarami
                              شما هنوز درگیر pf_write هستید =))
                              بیخیال نوشتن با pff بشید اصلا منطقی نیست برای نوشتن از pff استفاده کنید
                              میشه همون ff را با کم کردن توابع اضافی به مقدار چشمگیری حجمش را کاهش داد
                              خب حالا چرا به ریشمون میخندید
                              اتفاقا دارم روی ff هم کار میکنم ولی گفتم pff رو شروع کردم به یه جایی که به درد کارای ساده بخوره برسونمش
                              الان نوشتنش درست شده ولی کلا 512 بایت بیشتر نمینویسه توی یه فایل و به ته کلاستر میرسه دیگه دیوانه میشه
                              اگه بشه بش فهموند که کلاستر پر شد برو کلاستر بعدی و شروع کن ادامه دیتا رو بنویس میشه کارای ساده و خوبی باش کرد
                              به نظر شما نمیشه؟!!!!!!
                              درایور شبکه و nRF24L01
                              کاتالوگ محصولات
                              کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
                              شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
                              فروش اسيلوسکوپ GWinstek GOS-630FC

                              دیدگاه


                                پاسخ : [آموزش] نحوه استفاده از کتابخانه pff.h

                                برای دیتا لاگر نمیشه که من مثلا 4GB رو پر کنم از n تا فایل 512 بایتی
                                بعد همینطور یکی یکی بنویسه ببنده بره بعدی
                                میخوام یه فایل رو باز کنه و تا میتونه همینطور شروع کنه به نوشتن و بعد ببنده ( مثلا 2 سال مدار همینطور کار کنه )
                                به نظر شما میشه با pff همچین کارایی کرد؟!!!!
                                فکر نکنم pff یک همچین قابلیتی داشته باشه ولی بازهم اگه شد تست می کنم و بهتون خبر می دم .
                                البته چون من تعداد فایلها و حجمم محدود و تقریبا مشخص است می تونم این مشکل رو به روشی که گفتم حل کنم ولی شما یک کم سختتره براتون .
                                فکر نکنم بتونید ایجوری توی فایلتون بنویسی من قبلا تست کرده بودم ولی دوباره تست می کنم و بهتون خبر می دم .

                                دیدگاه

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