پاسخ : کتابخانه ff.h
یه توضیح دیگه باید اینجا در مورد این متغیر ها و استراکچرها داده بشه
توی این توابع این دوست خوب چینیمون اومده و توی فایل integer.h متغیر ها رو برای راحتی کار و تایپ سریع نامگزاری مجدد کرده
اما در مورد استراگچرهای مورد نیاز این توابع باید بگم 5 تا استراکچر هست که در فایل ff.h تعریف شده و یکی یکی یه توضیح مختصر میدم
ولی چون متغیر ها خوب نامگزاری شده و یه توضیح مختصر جلوی هرکدوم داره و معلومه برای چیه , پس من دیگه توضیح بیشتر نمیدم ولی اگر لازم بود بپرسید
استراکچر اول FATFS هست که اطلا عات فت درونش قرار میگیره
برای دسترسی به هر کدام از متغیر ها و مقادیر داخلی اونها باید بعد از نام استراکچر که تعریف کردید با قرار دادن نقطه (.)و نام متغیر داخلی استراکچر رو قرار بدید که میتونه یکی از متغیر های زیر باشه
استراکچر بعدی FIL هست که اطلا عات فایل درونش قرار میگیره و ساختارش این شکلیه
استراکچر بعدی DIR هست که اطلاعات پوشه درونش هست و ساختارش این شکلیه
استراکچر بعدی FILINFO هست که خصوصیات فایل درونش هست وساختارش اینطوریه
و بعدی که استراکچر نیست ولی ساختار شمارشی یا انیوم هست هم FRESULT نام داره که خطا های برگشتی توابع درونشه و به این صورته
امید وارم کافی باشه
یه توضیح دیگه باید اینجا در مورد این متغیر ها و استراکچرها داده بشه
توی این توابع این دوست خوب چینیمون اومده و توی فایل integer.h متغیر ها رو برای راحتی کار و تایپ سریع نامگزاری مجدد کرده
کد:
/* These types must be 16-bit, 32-bit or larger integer */ typedef int INT; typedef unsigned int UINT; /* These types must be 8-bit integer */ typedef char CHAR; typedef unsigned char UCHAR; typedef unsigned char BYTE; /* These types must be 16-bit integer */ typedef short SHORT; typedef unsigned short USHORT; typedef unsigned short WORD; typedef unsigned short WCHAR; /* These types must be 32-bit integer */ typedef long LONG; typedef unsigned long ULONG; typedef unsigned long DWORD;
اما در مورد استراگچرهای مورد نیاز این توابع باید بگم 5 تا استراکچر هست که در فایل ff.h تعریف شده و یکی یکی یه توضیح مختصر میدم
ولی چون متغیر ها خوب نامگزاری شده و یه توضیح مختصر جلوی هرکدوم داره و معلومه برای چیه , پس من دیگه توضیح بیشتر نمیدم ولی اگر لازم بود بپرسید
استراکچر اول FATFS هست که اطلا عات فت درونش قرار میگیره
برای دسترسی به هر کدام از متغیر ها و مقادیر داخلی اونها باید بعد از نام استراکچر که تعریف کردید با قرار دادن نقطه (.)و نام متغیر داخلی استراکچر رو قرار بدید که میتونه یکی از متغیر های زیر باشه
کد:
/* File system object structure (FATFS) */ typedef struct { BYTE fs_type; /* FAT sub-type (0:Not mounted) */ BYTE drv; /* Physical drive number */ BYTE csize; /* Sectors per cluster (1,2,4...128) */ BYTE n_fats; /* Number of FAT copies (1,2) */ BYTE wflag; /* win[] dirty flag (1:must be written back) */ BYTE fsi_flag; /* fsinfo dirty flag (1:must be written back) */ WORD id; /* File system mount ID */ WORD n_rootdir; /* Number of root directory entries (FAT12/16) */ #if _MAX_SS != 512 WORD ssize; /* Bytes per sector (512, 1024, 2048 or 4096) */ #endif #if _FS_REENTRANT _SYNC_t sobj; /* Identifier of sync object */ #endif #if !_FS_READONLY DWORD last_clust; /* Last allocated cluster */ DWORD free_clust; /* Number of free clusters */ DWORD fsi_sector; /* fsinfo sector (FAT32) */ #endif #if _FS_RPATH DWORD cdir; /* Current directory start cluster (0:root) */ #endif DWORD n_fatent; /* Number of FAT entries (= number of clusters + 2) */ DWORD fsize; /* Sectors per FAT */ DWORD fatbase; /* FAT start sector */ DWORD dirbase; /* Root directory start sector (FAT32:Cluster#) */ DWORD database; /* Data start sector */ DWORD winsect; /* Current sector appearing in the win[] */ BYTE win[_MAX_SS]; /* Disk access window for Directory, FAT (and Data on tiny cfg) */ } FATFS;
استراکچر بعدی FIL هست که اطلا عات فایل درونش قرار میگیره و ساختارش این شکلیه
کد:
/* File object structure (FIL) */ typedef struct { FATFS* fs; /* Pointer to the owner file system object */ WORD id; /* Owner file system mount ID */ BYTE flag; /* File status flags */ BYTE pad1; DWORD fptr; /* File read/write pointer (0 on file open) */ DWORD fsize; /* File size */ DWORD sclust; /* File start cluster (0 when fsize==0) */ DWORD clust; /* Current cluster */ DWORD dsect; /* Current data sector */ #if !_FS_READONLY DWORD dir_sect; /* Sector containing the directory entry */ BYTE* dir_ptr; /* Ponter to the directory entry in the window */ #endif #if _USE_FASTSEEK DWORD* cltbl; /* Pointer to the cluster link map table (null on file open) */ #endif #if _FS_SHARE UINT lockid; /* File lock ID (index of file semaphore table) */ #endif #if !_FS_TINY BYTE buf[_MAX_SS]; /* File data read/write buffer */ #endif } FIL;
استراکچر بعدی DIR هست که اطلاعات پوشه درونش هست و ساختارش این شکلیه
کد:
/* Directory object structure (DIR) */ typedef struct { FATFS* fs; /* Pointer to the owner file system object */ WORD id; /* Owner file system mount ID */ WORD index; /* Current read/write index number */ DWORD sclust; /* Table start cluster (0:Root dir) */ DWORD clust; /* Current cluster */ DWORD sect; /* Current sector */ BYTE* dir; /* Pointer to the current SFN entry in the win[] */ BYTE* fn; /* Pointer to the SFN (in/out) {file[8],ext[3],status[1]} */ #if _USE_LFN WCHAR* lfn; /* Pointer to the LFN working buffer */ WORD lfn_idx; /* Last matched LFN index number (0xFFFF:No LFN) */ #endif } DIR;
استراکچر بعدی FILINFO هست که خصوصیات فایل درونش هست وساختارش اینطوریه
کد:
/* File status structure (FILINFO) */ typedef struct { DWORD fsize; /* File size */ WORD fdate; /* Last modified date */ WORD ftime; /* Last modified time */ BYTE fattrib; /* Attribute */ TCHAR fname[13]; /* Short file name (8.3 format) */ #if _USE_LFN TCHAR* lfname; /* Pointer to the LFN buffer */ UINT lfsize; /* Size of LFN buffer in TCHAR */ #endif } FILINFO;
و بعدی که استراکچر نیست ولی ساختار شمارشی یا انیوم هست هم FRESULT نام داره که خطا های برگشتی توابع درونشه و به این صورته
کد:
/* File function return code (FRESULT) */ typedef enum { FR_OK = 0, /* (0) Succeeded */ FR_DISK_ERR, /* (1) A hard error occured in the low level disk I/O layer */ FR_INT_ERR, /* (2) Assertion failed */ FR_NOT_READY, /* (3) The physical drive cannot work */ FR_NO_FILE, /* (4) Could not find the file */ FR_NO_PATH, /* (5) Could not find the path */ FR_INVALID_NAME, /* (6) The path name format is invalid */ FR_DENIED, /* (7) Acces denied due to prohibited access or directory full */ FR_EXIST, /* (8) Acces denied due to prohibited access */ FR_INVALID_OBJECT, /* (9) The file/directory object is invalid */ FR_WRITE_PROTECTED, /* (10) The physical drive is write protected */ FR_INVALID_DRIVE, /* (11) The logical drive number is invalid */ FR_NOT_ENABLED, /* (12) The volume has no work area */ FR_NO_FILESYSTEM, /* (13) There is no valid FAT volume */ FR_MKFS_ABORTED, /* (14) The f_mkfs() aborted due to any parameter error */ FR_TIMEOUT, /* (15) Could not get a grant to access the volume within defined period */ FR_LOCKED, /* (16) The operation is rejected according to the file shareing policy */ FR_NOT_ENOUGH_CORE, /* (17) LFN working buffer could not be allocated */ FR_TOO_MANY_OPEN_FILES, /* (18) Number of open files > _FS_SHARE */ FR_INVALID_PARAMETER /* (19) Given parameter is invalid */ } FRESULT;
امید وارم کافی باشه
دیدگاه