部分源碼:
- /*
- +FHDR------------------------------------------------------------------
- Copyright (c),
- Tony Yang –specialized in fat usb firmware development
- 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();
- 入口:無
- 出口:無
- ===============================================================================
- */
- static FILE *file2;
- static u8 Fl;
- void main(void)
- {
- #if 1
- u32 cc,bb;
- u16 COUNT,i;
- u8 a,ATTR,j,b,mode;
- u8 HANDLE1,HANDLE2;
- u8 buf[65536];
- u8 ddd[] = "c:\\ok\\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa我們aaaaaaaaaaaAAAAAAAAAAAaaaaaaaaa.rar";
- flash_management_sysinit();
- FAT_filesystem_autoformat('C',FAT32,270336*2*2);
- FAT_filesystem_autoformat('D',FAT16,270336);
- FAT_filesystem_initialization();
- volume_inquiry('c',&cc,&bb);
-
- printf("Volume C Capacity: %ld\n",cc);
- printf("Volume C FreeSpace: %ld\n",bb);
- volume_inquiry('d',&cc,&bb);
-
- printf("Volume D Capacity: %ld\n",cc);
- printf("Volume D FreeSpace: %ld\n",bb);
- scanf("%c",&a);
- /* 建立一個目錄CREATE_FOLDER_TEST,以測試建立目錄函數create_floder() */
- create_folder("c:\\測試中文目錄");
- create_file("測試中文目錄\\測試中文文件名.txt");
- create_folder("aaaaaaaaaaA");
- create_folder("aaaaaaaaaaA");
- create_folder("C:\\AAAAAAAAAAAaaaaaa");
- create_folder("D:\\AAAAAAAAAAAaaaaaa");
- create_folder("c:\\CREATE_FOLDER_TEST");
- create_folder("D:\\CREATE_FOLDER_TEST");
- scanf("%c",&a);
- /* 在目錄CREATE_FOLDER_TEST下建立一個文件,以測試建立目錄函數create_file() */
- create_file("C:\\CREATE_FOLDER_TEST\\created_file.txt");
- create_file("D:\\CREATE_FOLDER_TEST\\created_file.txt");
- create_file("C:\\CREATE_FOLDER_TEST\\AAAAAAAAAAB");
- create_file("D:\\CREATE_FOLDER_TEST\\AAAAAAAAAABaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
- create_file("D:\\CREATE_FOLDER_TEST\\aa.rarc.rar.rar");
- /* 重命令文件CREATE_FOLDER_TEST\\created_file.txt為"DFDFDFDFDFDFDFDFSDFSDTONY.TXT"
- ,以測試重命名文件函數rename_file() */
- //rename_file("ok\\bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.RAR","DFDFDFDFDFDFDFDFSDFSDTONY.TXT");
- //scanf("%c",&a);
- /* 刪除文件CREATE_FOLDER_TEST\\created_file.txt */
- //delete_file("ok\\ZZZZZZZZZZZZZZZUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.RAR");
- /* 刪除目錄CREATE_FOLDER_TEST */
- //delete_folder("CREATE_FOLDER_TEST");
- /* 列舉CREATE_FOLDER_TEST目錄下面的所有文件,打印到屏幕 */
- cd_folder("c:\\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);
- #if 1
- /* 在OK目錄下連續寫文件,readed.rar,直到磁盤被寫滿 */
- create_folder("c:\\ok");
- 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{
-
- cc = fread(buf,1,40000,file2);
- //printf("\nreaded chars = %ld ",cc);
- write_file(HANDLE1,buf, cc);
- if(cc < 40000)
- break;
- }while(1);
- close_file(HANDLE1);
- fclose(file2);
- }
- else
- printf("\nOpen File %s failed",ddd);
- }
- else
- printf("Create file %s failed\n",ddd);
- ddd[6+j] ++;
- }
- j++;
- }while(j< 20);
- scanf("%c",&a);
- /* 分離磁盤0中的所有文件 */
- a = 0;
- while(disk_enumeration(0,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)
- { printf("create file failed");scanf("%c",buf);
- 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);
- if(cc != 50000)
- {
- close_file(HANDLE1);
-
- break;
- }
-
- }while(1);
- else{
- printf("Openfile failed!");
- }
- fclose(file2);
- }
- scanf("%c",&a);
- #endif
- /* DISK0 拷貝至DISK1 */
- mode = 0; //設置disk_enumeration列舉mode(0)-復位至第一個文件項或目錄項開始枚舉
- while(disk_enumeration(0,buf,mode,&ATTR) == SUCC) //枚舉一個目錄項或目錄項
- {
- printf("\nreaded entry=%s Attr = %x",buf,ATTR); //打印被枚舉的一個目錄項或目錄項
-
- if(mode == 0)
- mode = 1; //設置disk_enumeration列舉mode(1)- 繼續上一枚舉后的目錄項或目錄項
- if(ATTR & ATTR_DIRECTORY)
- {
- buf[0]++;
- create_folder(buf); //建一個disk_enumeration的目錄
- continue;
- }
- else //復制文件
- { HANDLE1 = open_file(buf); //打開文件
- buf[0]++;
- create_file(buf); //在DISK1上建立文件
-
- }
- if(HANDLE1 != FAIL)
- { HANDLE2 = open_file(buf); //打開DISK1上建立的文件
- if(HANDLE2 == FAIL)
- break;
- do{ //復制文件
- cc = read_file(HANDLE1,buf+400,50000); //讀文件
- printf("\nreaded chars = %ld ",cc); //打印讀文件讀取的字節數
- cc = write_file(HANDLE2,buf+400,cc); //將讀取的字節寫去DISK1上的文件
- if(cc != 50000) //檢查讀取的字節數,確認文件尾
- {
- close_file(HANDLE1); //文件復制結束,關閉文件
- close_file(HANDLE2);
- break;
- }
- }while(1);
- }
- else
- {
- printf("Openfile failed!");
- }
- }
- scanf("%c",&a);
- #else
- u8 ret;
- u8 handle,buffer[65536];
- struct attribute ATTRIBUTE;
- ret = flash_management_sysinit();
- ret = FAT_filesystem_autoformat('C',FAT32,270336*2*2);
- ret = FAT_filesystem_initialization();
- ret = create_folder("C:\\newFolder_0");
- if (ret == 0)
- {
- printf("newFolder_0 創建成功!\n");
- }
-
- ret = create_file("C:\\newFolder_0\\newFile_1");
- if (ret == 0)
- {
- printf("newFolder_0\\newFile_1 創建成功!\n");
- }
- ret = create_file("C:\\newFolder_0\\newFile_2");
- if (ret == 0)
- {
- printf("newFolder_0\\newFile_2 創建成功!\n");
- }
-
- ret = delete_file("C:\\newFolder_0\\newFile_1");
- if (ret == 0)
- {
- printf("newFolder_0\\newFile_1 刪除成功!\n");
- }
- ret = delete_file("C:\\newFolder_0\\newFile_2");
- if (ret == 0)
- {
- printf("newFolder_0\\newFile_2 刪除成功!\n");
- }
- cd_folder("C:\\newFolder_0",1);
- ret = delete_folder("C:\\newFolder_0");//成功
- if (ret == 0)
- {
- printf("newFolder_0 刪除成功!\n\n");
- }
- else
- printf("newFolder_0 刪除失敗!\n\n");
- //獲取文件的訪問,建立,修改時間
- create_file("test.txt");
- if(get_file_attribute("test.txt", The_FILE, &ATTRIBUTE)== SUCC)
- {
- printf("\n文件:test.txt\naccess time: %d-%d-%d",ATTRIBUTE.access_time_year,ATTRIBUTE.access_time_month,ATTRIBUTE.access_time_day);
- printf("\ncreate time: %d-%d-%d",ATTRIBUTE.create_time_year,ATTRIBUTE.create_time_month,ATTRIBUTE.create_time_day);
- printf("\ncreate time: %d:%d:%d",ATTRIBUTE.create_time_hour,ATTRIBUTE.create_time_minute,ATTRIBUTE.create_time_second);
- printf("\nmodify time: %d-%d-%d",ATTRIBUTE.modify_time_year,ATTRIBUTE.modify_time_month,ATTRIBUTE.modify_time_day);
- printf("\nmodify time: %d:%d:%d",ATTRIBUTE.modify_time_hour,ATTRIBUTE.modify_time_minute,ATTRIBUTE.modify_time_second);
- printf("\nattr=%x",ATTRIBUTE.attr);
- }
- else
- {
- printf("FAIL");
- }
- //獲取目錄的訪問,建立,修改時間
- create_folder("test");
- if(get_file_attribute("test", The_DIRECTORY, &ATTRIBUTE)== SUCC)
- {
- printf("\n目錄:test\naccess time: %d-%d-%d",ATTRIBUTE.access_time_year,ATTRIBUTE.access_time_month,ATTRIBUTE.access_time_day);
- printf("\ncreate time: %d-%d-%d",ATTRIBUTE.create_time_year,ATTRIBUTE.create_time_month,ATTRIBUTE.create_time_day);
- printf("\ncreate time: %d:%d:%d",ATTRIBUTE.create_time_hour,ATTRIBUTE.create_time_minute,ATTRIBUTE.create_time_second);
- printf("\nmodify time: %d-%d-%d",ATTRIBUTE.modify_time_year,ATTRIBUTE.modify_time_month,ATTRIBUTE.modify_time_day);
- printf("\nmodify time: %d:%d:%d",ATTRIBUTE.modify_time_hour,ATTRIBUTE.modify_time_minute,ATTRIBUTE.modify_time_second);
- printf("\nattr=%x",ATTRIBUTE.attr);
- }
- else
- {
- printf("FAIL");
- }
- create_folder("-実現不能なことばは始終で美しい-");
- create_file("人生で最も意義がある時間は、苦しんでいる時間だ。.txt");
- ret = create_file("-実現不能なことばは始終で美しい-.txt");
- handle = open_file("-実現不能なことばは始終で美しい-.txt");
- write_file(handle,buffer,1024);
- create_file("Локальный IP адрес.txt");
- create_file("Endere?o do IP Local.txt");
- close_file(handle);
- create_file("FatFsは小規模な組み込みシステム向けの汎用FATファイルシステム?モジュールです。ANSI C準拠でハードウェア?アーキテクチャには依存しないので、必要なワーク?エリアが確保できれば、8051,.txt");
- create_file("正普個人-楊文斌.txt");
- create_folder("蘇州正普系統軟件有限公司");
- create_folder("GetEntryFromDirectory()增加檢查CORE.offset==512目錄讀取結束的判斷");
- create_file("測試中文文件名.txt");
- create_file("蘇州正普系統軟件有限公司.txt");
- create_file("GetEntryFromDirectory()增加檢查CORE.offset==512目錄讀取結束的判斷.txt");
- scanf("%c",&ret);
- #endif
- }
-
- /*
- +FFTR--------------------------------------------------------------------
- $Log: main.C,v $
- -FFTR--------------------------------------------------------------------
- */
復制代碼 |