راه اندازی FAT با AVR

راه اندازی FATوکار با حافظه های MMC و SDCباAVR – قسمت5

به نام خدا

راه اندازی FAT با AVR قسمت 5 : بررسی توابع  FAT –  خواندن و نوشتن در حافظه های MMC و SDC

در ادامه بحث راه اندازی FAT با AVR پس از آنکه یک فایل را برای با تابع f_open باز کردیم، با توجه به mode انتخاب شده می توانیم روی آن فایل بنویسیم و از آن بخوانیم. برای این منظور می بایست از توابعی که در زیر به توضیح آن ها می پردازیم استفاده نمود.

تابع نوشتن در فایل:

FRESULT f_write(FIL* fp, const void* buff, unsigned int btw, unsigned int* bw);

این تابع دارای چهار ورودی و یک مقدار برگشتی می باشد، در ادامه به برسی ورودی ها و مقدار برگشتی می پردازیم.

پارامتر های ورودی:

  • fp* : یک متغییر پوینتری به استراکچری از جنس FIL می باشد. این استراکچر حاوی اطلاعتی از قبیل اطلاعات FATFS فایل، ID ، آدرس سکتور در کلاستر، مسیر فایل،… می باشد. این استراکچر را در جلسه قبل در تابع f_open توضیح دادیم، در تابع f_write دیتای مورد نظر ما روی این استراکچر نوشته می شود.
  • buff* : اشاره گر به یک بافر آرایه ای از جنس بایت است که در RAM قرار دارد. در اصل محتوایی را که می خواهیم بنویسیم در این متغییر باید قرار گیرد.
  • Btw : یک متغییر از جنس unsigned int می باشد. این متغییر تعداد بایت ها یا کاراکترهایی از بافر را که می خواهیم در فایل بنویسیم تعیین می کند.
  • bw* : یک متغییر پوینتری از جنس unsigned int می باشد که اشاره گر به تعداد بایت هایی از آرایه است که بتواند داخل فایل بنویسد.

مقدار برگشتی:

  • این تابع دارای مقدار برگشتی نیز می باشد که مقدار برگشتی از جنس FRESULT که از نوع enum تعریف شده است می باشد این نوع مقادیر را در جلسات گذشته بررسی کردیم. این تابع یکی از مقدار های زیر را بر می گرداند:
    1. FR_OK : در صورت موفقیت آمیز بودن عملیات این تابع این مقدار را بر می گرداند.
    2. FR_DENIED: دسترسی به فایل مورد نظر به دلیل آن که فایل به صورت Read_only باز شده است، ممکن نیست.
    3. FR_NOT_READY : دسترسی به دیسک امکان پذیر نمی باشد، ممکن است به دلیل گم کردن اطلاعات یا چیزی دیگر باشد.
    4. FR_DISK_ERR : عملیات ناموفق بوده است ،زیرا دسترسی فیزیکی به دیسک از دست رفته است.
    5. FR_INT_ERR : عملیات به علت اشتباه بودن استراکچر FAT و یا خطای داخلی ناموفق بوده است.
    6. FR_INVALID_OBJECT : فایل با تابع f_open باز نشده است.

تابع خواندن از فایل:

FRESULT f_read(FIL* fp, void* buff, unsigned int btr, unsigned int* br);

این تابع نیز دارای چهار ورودی و یک مقدار برگشتی می باشد.

پارامتر های ورودی:

  • fp*: یک متغییر پوینتری به استراکچری از جنس FIL می باشد. این استراکچر حاوی اطلاعتی از قبیل اطلاعات FATFS فایل، ID ، آدرس سکتور در کلاستر، مسیر فایل،… می باشد. این استراکچر را در جلسه قبل در تابع f_open توضیح دادیم، در تابع f_read دیتای مورد نظر از روی این استراکچر خوانده می شود.
  • buff* : اشاره گر به یک بافر آرایه ای از جنس بایت است که در RAM قرار دارد. در اصل محتوایی را که از فایل می خوانیم در این متغییر قرار می گیرد. طول این آرایه باید به اندازه کافی بزرگ باشد، حداقل طول این آرایه باید به اندازه بزرگترین عددی باشد که جای btr قرار می گیرد.
  • Btr : یک متغییر از جنس unsigned int می باشد. این متغییر تعداد بایت ها یا کاراکترهایی را که از فایل می خواهیم بخوانیم را تعیین می کند.
  • br* : یک متغییر پوینتری از جنس unsigned int می باشد که اشاره گر به تعداد بایت هایی است که از آرایه می خوانیم. در حالتب که تابع موفقیت آمیز کار خود را به پایان برساند و عدد داخل br کمتر از btr باشد، یا به عبارتی از تعداد کاراکترهایی که قصد خواندن آن ها را داشتیم کمتر باشد، به این معنی است که به انتهای فایل رسیده ایم.

مقدار برگشتی:

  • این تابع دارای مقدار برگشتی نیز می باشد که مقدار برگشتی از جنس FRESULT که از نوع enum تعریف شده است می باشد همان طور که در بالا گفتیم این نوع مقادیر را در جلسات گذشته بررسی کردیم. این تابع یکی از مقدار های زیر را بر می گرداند:
    1. FR_OK : در صورت موفقیت آمیز بودن عملیات این تابع این مقدار را بر می گرداند.
    2. FR_DENIED: دسترسی به فایل مورد نظر به دلیل آن که فایل به صورت write_only باز شده است، ممکن نیست.
    3. FR_NOT_READY : دسترسی به دیسک امکان پذیر نمی باشد، ممکن است به دلیل گم کردن اطلاعات یا چیزی دیگر باشد.
    4. FR_DISK_ERR : عملیات ناموفق بوده است ،زیرا دسترسی فیزیکی به دیسک از دست رفته است.
    5. FR_INT_ERR : عملیات به علت اشتباه بودن استراکچر FAT و یا خطای داخلی ناموفق بوده است.
    6. FR_INVALID_OBJECT : فایل با تابع f_open باز نشده است.

در جلسه بعد به بررسی یک برنامه عملی می پردازیم.

 

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *