This program is for transferring all contents of SD card to any flash drive like pen drive. After importing this program, you will see 3 FATFileSystem libraries, one in main folder, one in SDFileSystem folder and one in USBHost folder. Delete two libraries, which are in SDFileSystem folder and USBHost folder. But don't delete the FATFileSystem library, which are in main folder.
Dependencies: FATFileSystem SDFileSystem TextLCD USBHost mbed
main.cpp
00001 #include "mbed.h" 00002 #include "USBHostMSD.h" 00003 #include "TextLCD.h" 00004 #include "SDFileSystem.h" 00005 00006 DigitalOut led(LED1); 00007 00008 TextLCD lcd(p19, p20, p27, p28, p29, p30, TextLCD::LCD20x2); // rs, e, d4-d7 00009 SDFileSystem sd(p5, p6, p7, p8, "sd"); 00010 //USBHostMSD msd("usb"); 00011 00012 void listdir(void); 00013 void FileCopy(char *, char *); 00014 void copyallusb(void); 00015 00016 void listdir(void) { 00017 DIR *d; 00018 struct dirent *p; 00019 00020 d = opendir("/sd"); 00021 if (d != NULL) { 00022 while ((p = readdir(d)) != NULL) { 00023 lcd.cls(); 00024 lcd.printf(" - %s\r\n", p->d_name); 00025 } 00026 } else { 00027 lcd.cls(); 00028 lcd.printf("opening failed, try again\n"); 00029 } 00030 closedir(d); 00031 } 00032 00033 void FileCopy(char *fsrc , char *ftrgt) { 00034 FILE *fs = fopen(fsrc, "rb"); 00035 if(fs == NULL) { 00036 lcd.cls(); 00037 lcd.printf("couldn't open sd\n"); 00038 } 00039 FILE *ft = fopen(ftrgt, "wb"); 00040 if(ft == NULL) { 00041 lcd.cls(); 00042 lcd.printf("couldn't open usb\n"); 00043 } 00044 while(1) { 00045 int ch = fgetc(fs); 00046 if(ch == EOF) 00047 break; 00048 else 00049 fputc(ch, ft); 00050 } 00051 fclose(fs); 00052 fclose(ft); 00053 } 00054 00055 void copyallusb(void) { 00056 USBHostMSD msd("usb"); 00057 00058 // try to connect a MSD device 00059 while(!msd.connect()) { 00060 wait_ms(500); 00061 lcd.cls(); 00062 lcd.printf("connecting to USB"); 00063 } 00064 00065 char srstrgt[128]; 00066 char filesrs[128]; 00067 char filetrgt[128]; 00068 DIR *d; 00069 struct dirent *p; 00070 00071 d = opendir("/sd/"); 00072 if (d != NULL) { 00073 lcd.cls(); 00074 lcd.printf("copy starting\n"); 00075 while ((p = readdir(d)) != NULL) { 00076 sprintf(srstrgt, "%s", p->d_name); 00077 sprintf(filesrs, "/sd/%s", srstrgt); 00078 sprintf(filetrgt, "/usb/%s", srstrgt); 00079 lcd.cls(); 00080 lcd.printf("copying-\n"); 00081 lcd.printf("%s\n", srstrgt); 00082 FileCopy(filesrs, filetrgt); 00083 } 00084 lcd.cls(); 00085 lcd.printf("File copy done!\n"); 00086 } else { 00087 lcd.printf("No File, try again\n"); 00088 } 00089 closedir(d); 00090 00091 // if device disconnected, try to connect again 00092 //if (!msd.connected()) 00093 //break; 00094 } 00095 00096 00097 int main() { 00098 lcd.cls(); 00099 lcd.printf("JAI MATA DI!\n"); 00100 wait(2); 00101 copyallusb(); 00102 while(1) { 00103 led=!led; 00104 Thread::wait(500); 00105 } 00106 }
Generated on Tue Jul 19 2022 05:53:17 by 1.7.2