|
楼主 |
发表于 2014-6-7 18:52:50
|
显示全部楼层
函数实例:
/*
*********************************************************************************************************
* 函 数 名: Test_f_readwrite
* 功能说明: f_read和f_write函数测试
* 形 参:无
* 返 回 值: 无
*********************************************************************************************************
*/
uint8_t Test_f_readwrite(void)
{
FRESULT fr, result;
FATFS fs;
FIL fsrc, fdst;
UINT br, bw;
BYTE buffer[4096]; /* File copy buffer */
float FinishPecent;
uint32_t Count = 0;
/* 第1步:先挂载文件系统*********************************************************************/
result = f_mount(&fs, "1:", 1); /* Mount a logical drive */
if (result != FR_OK)
{
printf("挂载文件系统失败 (%s)\\r\\n", FR_Table[result]);
}
else
{
printf("挂载文件系统成功 (%s)\\r\\n", FR_Table[result]);
}
/* 第2步:打开两个文件********************************************************************/
fr = f_open(&fsrc, "1:/txt/nel.txt", FA_OPEN_EXISTING | FA_READ);
if (fr != FR_OK)
{
printf("打开失败 (%s)\\r\\n", FR_Table[fr]);
}
else
{
printf("打开成功 (%s)\\r\\n", FR_Table[fr]);
}
fr = f_open(&fdst, "1:/txt/nel1.txt", FA_CREATE_ALWAYS | FA_WRITE);
if (fr != FR_OK)
{
printf("打开失败 (%s)\\r\\n", FR_Table[fr]);
}
else
{
printf("打开成功 (%s)\\r\\n", FR_Table[fr]);
}
Count = 0;
FinishPecent = 0.0f;
/* 第3步:将文件nel.txt中的内容复制到nel1.txt里面****************************************/
for (;;)
{
fr = f_read(&fsrc, buffer, sizeof buffer, &br); /* 从源文件中读4K数据 */
/* 串口打印复制率 */
Count = Count + 1;
FinishPecent = (float)(Count* 4096) / fsrc.fsize;
printf("错误类型 = %s 当前已经复制%.2f \\r", FR_Table[fr], FinishPecent);
if (fr || br == 0) break; /* 出现错误或者已经读完 */
fr = f_write(&fdst, buffer, br, &bw); /* 从源文件读出的内容写入多目的文件中 */
if (fr || bw < br) break; /* 写入出错或者磁盘已满 */
}
printf("\\r\\n"); /* 换行 */
/* 关闭打开的两个文件 */
f_close(&fsrc);
f_close(&fdst);
/* 最后一步:卸载文件系统 */
result = f_mount(NULL, "1:", 1);
if (result != FR_OK)
{
printf("卸载文件系统失败 (%s)\\r\\n", FR_Table[result]);
}
else
{
printf("卸载文件系统成功 (%s)\\r\\n", FR_Table[result]);
}
}
实际测试结果:
|
|