在线时间250 小时
UID423774
注册时间2014-10-22
NXP金币0
TA的每日心情 | 慵懒 2017-4-27 10:34 |
---|
签到天数: 3 天 连续签到: 1 天 [LV.2]偶尔看看I
金牌会员
 
- 积分
- 1450
- 最后登录
- 2020-8-3
|
本帖最后由 流-423774 于 2015-6-5 17:15 编辑
这个是基于我上次发过的一个贴,https://www.nxpic.org.cn/module/forum/thread-598984-1-1.html在这个基础之上,编写了上位机测试软件。上位机通过USB连接KL26单片机,通过创建文件,读文件,写文件内容,读文件内容,删除文件,扫描文件等操作,好,废话少说,看看效果
如上图软件的运行效果,SD卡是8G,先扫描一下TF卡,看看里面保存了一些什么内容
通过列表控件,我们看到了SD卡里面的文件内容,先创建一个文件c.txt
看到创建的c.txt文件没有,好吧,在向这个文件里面写入一些数据,然后读下这个文件
好了,现在不想用这个文件了,把他删除,删除之后扫描发现这个文件不见了
/*----------------------------------------------*/
到此,再看看实现代码
/************************************************************************
*Name: CTRFT_Get_Files
*Description: 搜索文件目录下所有文件
*Return:
*Input:
*Output:
*************************************************************************/
FRESULT CTRFT_Get_Files (char* path)
{
FRESULT res;
FILINFO fno;
DIR dir;
int i;
char *fn;
#if _USE_LFN
static char lfn[_MAX_LFN + 1];
fno.lfname = lfn;
fno.lfsize = sizeof(lfn);
#endif
/* Open the directory */
res = FAT1_opendir(&dir, path);
if (res == FR_OK)
{
i = strlen(path);
for (;;)
{
/* Read a directory item */
res = FAT1_readdir(&dir, &fno);
/* Break on error or end of dir */
if (res != FR_OK || fno.fname[0] == 0) break;
/* Ignore dot entry */
if (fno.fname[0] == '.') continue;
#if _USE_LFN
fn = *fno.lfname ? fno.lfname : fno.fname;
#else
fn = fno.fname;
#endif
/* It is a directory */
if (fno.fattrib & AM_DIR)
{ //目录
sprintf(&path, "/%s", fn);
printf(" - %s\r\n",path);
res = CTRFT_Get_Files(path);
if (res != FR_OK) break;
path = 0;
}
else
{
//文件
}
}
}
else
{
//printf("scan files error : %d\r\n",res);
}
return res;
}
/************************************************************************
*Name: CTRFT_Get_Files
*Description: 创建文件
*Return:
*Input:
*Output:
*************************************************************************/
int CTRFT_Create_File(char* file)
{
FIL fdst;
FRESULT res;
char CreatePath[50]={0};
sprintf(CreatePath, "%s/%s", path0, file);
res = FAT1_open(&fdst, CreatePath, FA_CREATE_ALWAYS | FA_WRITE);
if(res != FR_OK)
{
return -1;
}
FAT1_close(&fdst);
return 0;
}
/************************************************************************
*Name: CTRFT_Write_File
*Description: 写文件数据
*Return:
*Input:
*Output:
*************************************************************************/
int CTRFT_Write_File(char* file, char* data)
{
FIL fdst;
FRESULT res;
char OptionPath[50]={0};
sprintf(OptionPath, "%s/%s", path0, file);
res = FAT1_open(&fdst, OptionPath, FA_OPEN_ALWAYS | FA_WRITE);
if (res != FR_OK)
{
return -1;
}
res = FAT1_lseek(&fdst, FAT1_f_size(&fdst));
if (res != FR_OK)
{
FAT1_close(&fdst);
return -1;
}
res = FAT1_write(&fdst, data, strlen((char*)data), &file_bw);
FAT1_close(&fdst);
return 0;
}
/************************************************************************
*Name: CTRFT_Read_File
*Description: 读文件数据
*Return:
*Input:
*Output:
*************************************************************************/
int CTRFT_Read_File(char* file)
{
FIL fdst;
FRESULT res;
char OptionPath[50]={0};
char ReadBuff[50]={0};
char UsbSend[100]={0};
sprintf(OptionPath, "%s/%s", path0, file);
res = FAT1_open(&fdst, OptionPath, FA_READ);
if (res != FR_OK)
{
return -1;
}
do
{
res = FAT1_read(&fdst, ReadBuff, sizeof(ReadBuff), &file_bw);
if (res != FR_OK)
{
FAT1_close(&fdst);
return -1;
}
res = FAT1_lseek(&fdst, file_bw);
if (res != FR_OK)
{
FAT1_close(&fdst);
return -1;
}
}while (file_bw > 50);
FAT1_close(&fdst);
return 0;
}
/************************************************************************
*Name: CTRFT_Delete_File
*Description: 删除文件
*Return:
*Input:
*Output:
*************************************************************************/
int CTRFT_Delete_File(char* file)
{
//FIL fdst;
FRESULT res;
char OptionPath[50]={0};
sprintf(OptionPath, "%s/%s", path0, file);
res = FAT1_unlink(OptionPath);
if (res != FR_OK)
{
return -1;
}
return 0;
}
|
|