📄 main.c
字号:
/*
+FHDR------------------------------------------------------------------
Copyright (c),
Tony Yang –51,AVR,ARM firmware developer
Contact:qq 292942278 e-mail:tony_yang123@sina.com.cn
Abstract:
$Id: main.C,v 1.12 2007/05/10 11:13:14 design Exp $
-FHDR-------------------------------------------------------------------
*/
#include "stdio.h"
#include "include\types.h"
#include "fat\fat.h"
#include "Flash_Management\Flash_Management.h"
#include "include\FAT_cfg.h"
/*
===============================================================================
函数
main();
入口:无
出口:无
===============================================================================
*/
FILE *file2;
void main(void)
{
u32 cc,bb;
u16 COUNT;
u8 a,ATTR,j;
u8 HANDLE1;
u8 buf[65535];
u8 ddd[] = "c:\\ok\\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAAAAAAAAAAAAAAAaaaaaaaaa.rar";
flash_management_sysinit();
FAT_filesystem_initialiation();
volume_inquiry('c',&cc,&bb);
printf("Volume Capacity: %ld\n",cc);
printf("Volume FreeSpace: %ld\n",bb);
scanf("%c",&a);
/* 建立一个目录CREATE_FOLDER_TEST,以测试建立目录函数create_floder() */
create_floder("aaaaaaaaaa");
create_floder("aaaaaaaaaaA");
create_floder("aaaaaaaaaaA");
create_floder("aaaaaaaaaaAA");
create_floder("C:\\AAAAAAAAAAAaaaaaa");
create_floder("C:\\AAAAAAAAAAAaaaaaa");
create_floder("CREATE_FOLDER_TEST");
create_floder("CREATE_FOLDER_TEST");
scanf("%c",&a);
/* 在目录CREATE_FOLDER_TEST下建立一个文件,以测试建立目录函数create_file() */
create_file("C:\\CREATE_FOLDER_TEST\\created_file.txt");
create_file("C:\\CREATE_FOLDER_TEST\\created_file.txt");
create_file("C:\\CREATE_FOLDER_TEST\\AAAAAAAAAAB");
create_file("C:\\CREATE_FOLDER_TEST\\AAAAAAAAAAB");
create_file("file.txt");
a = open_file("file.txt");
write_file(a,buf, 0x1000);write_file(a,buf, 0x1000);
write_file(a,buf, 0x1000);write_file(a,buf, 0x1000);
close_file(a);
/* 重命令文件CREATE_FOLDER_TEST\\created_file.txt为"DFDFDFDFDFDFDFDFSDFSDTONY.TXT"
,以测试重命名文件函数rename_file() */
rename_file("C:\\CREATE_FOLDER_TEST\\created_file.txt","DFDFDFDFDFDFDFDFSDFSDTONY.TXT");
scanf("%c",&a);
/* 列举CREATE_FOLDER_TEST目录下面的所有文件,打印到屏幕 */
cd_folder("CREATE_FOLDER_TEST",0);
a = 0;
while(folder_enumeration(buf,a,&ATTR) == SUCC)
{
printf("\nreaded entry=%s Attr = %x",buf,ATTR);
if(a == 0)
a = 1;
}
scanf("%c",&a);
cd_folder(" ",1);
/* 列举根目录下面的所有文件,打印到屏幕 */
a = 0;
while(folder_enumeration(buf,a,&ATTR) == SUCC)
{
printf("\nreaded entry=%s Attr = %x",buf,ATTR);
if(a == 0)
a = 1;
}
scanf("%c",&a);
//printf("create folder:OK a = %d",a);
create_floder("OK");
/* OK目录下连续写文件,readed.rar,直到磁盘被写满 */
j = 0;
COUNT = 0;
do{
for(a = 0;a<25;a++)
{
COUNT++;
if(create_file(ddd) == SUCC)
{
printf("Create file %s successfully\n",ddd);
HANDLE1 = open_file(ddd);
if ((file2 = fopen("readed.rar","rb+")) == NULL)
{
return;
}
if(HANDLE1 != FAIL)
{
printf("\nOpen File %s successfully",ddd);
do{
printf("x");
cc = fread(buf,1,40000,file2);
write_file(HANDLE1,buf, cc);
if(cc < 40000)
break;
}while(1);
close_file(HANDLE1);
fclose(file2);
}
}
else
printf("Create file %s failed\n",ddd);
ddd[6+j] ++;
}
j++;
}while(j< 20);
/* 把磁盘内的所有文件分离出来 */
a = 0;
while(disk_enumeration(buf,a,&ATTR) == SUCC)
{
printf("\nreaded entry=%s Attr = %x",buf,ATTR);
if(a == 0)
a = 1;
if(ATTR & ATTR_DIRECTORY)
{
mkdir(buf+3);
continue;
}
else
{
if ((file2 = fopen(buf+3,"wb+")) == NULL)
{
return;
}
else
HANDLE1 = open_file(buf);
}
if(HANDLE1 != FAIL)
do{
cc = read_file(HANDLE1,buf+400,50000);
printf("\nreaded chars = %ld ",cc);
fwrite(buf+400,1,cc,file2);
//printf("bbbbbbbb");
if(cc != 50000)
{ //printf("aaaaaaaa");
close_file(HANDLE1);
//printf("ccccccccc");
break;
}
}while(1);
else{
//printf("Openfile failed!");
}
fclose(file2);
}
/* 删除文件CREATE_FOLDER_TEST\\created_file.txt */
//delete_file("CREATE_FOLDER_TEST\\created_file.txt");
/* 删除目录CREATE_FOLDER_TEST */
//delete_folder("CREATE_FOLDER_TEST");
scanf("%c",&a);
}
/*
+FFTR--------------------------------------------------------------------
$Log: main.C,v $
Revision 1.12 2007/05/10 11:13:14 design
改进函数static u32 Get_Previous_Cluster_From_Current_Cluster(u32 Cluster)
解决连续删除文件死机的问题。
测试方法:在OK目录下连续写500个长文件名文件,再删除测试成功
Revision 1.11 2007/03/31 14:25:25 design
给read_file(),write_file()增加一种优化的实现方法
对应fat_cfg.h增加两个编绎宏
#define Read_File_Optimization_Selector 1
#define Write_File_Optimization_Selector 1
Revision 1.10 2007/03/25 03:54:08 design
注:v1.9建目录成功,目录分离未成功
Revision 1.9 2007/03/25 03:42:24 design
create_file(),create_folder(),rename_file()测试通过
create_file(),create_folder()测试方法如下:
在目录test,ok下分别建500个文件,目录,之后用disk_enumeration分
离成功
rename_file()测试方法如下:
将文件"C:\TEST.PDF"改名为"DFDFDFDFDFDFDFDFSDFSDTONY.TXT"成功
Revision 1.8 2007/03/17 03:10:19 design
write_file测试成功
测试方法:
写3m rar文件,再读出,解压通过
Revision 1.7 2007/03/11 10:23:33 yangwenbin
disk_enumeration,folder_enumeration函数测试成功
测试方法:
分离大小为127M IMG的所含文件,如rar,pdf等
Revision 1.6 2007/03/06 14:49:13 yangwenbin
cd_folder()函数测试成功
Revision 1.5 2007/03/06 12:26:49 yangwenbin
函数cd_folder()完成, mode 0/mode1两种模式测试通过
Revision 1.4 2007/03/04 03:00:53 yangwenbin
open_file(),f_seek(),read_file(),
文件:C:\longfilename directory for test\tony yang and\test_test.txt
测试成功
Revision 1.3 2007/03/03 15:39:37 yangwenbin
open_file,f_seek,read_file
读1.9M文件测试成功
Revision 1.2 2007/02/28 13:39:22 Design
函数open_file打开绝对路径+短文件名测试通过
使用C代码如下:
open_file("C:\\HELLO.TXT")
Revision 1.1.1.1 2007/02/24 07:59:45 yangwenbin
增加FAT16文件系统基本代码
-FFTR--------------------------------------------------------------------
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -