application that helps to copy file between SD and mbed_local. insert/remove SD card is too troublesome for me. And also, this is a simple sample of the fread/fwrite
main.cpp@0:81b440aaf221, 2010-09-21 (annotated)
- Committer:
- okano
- Date:
- Tue Sep 21 15:15:20 2010 +0000
- Revision:
- 0:81b440aaf221
- Child:
- 1:1a76280274de
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
okano | 0:81b440aaf221 | 1 | #include "mbed.h" |
okano | 0:81b440aaf221 | 2 | #include "SDFileSystem.h" |
okano | 0:81b440aaf221 | 3 | |
okano | 0:81b440aaf221 | 4 | //DigitalOut led[] = { LED4, LED3, LED2, LED1 }; |
okano | 0:81b440aaf221 | 5 | BusOut led( LED4, LED3, LED2, LED1 ); |
okano | 0:81b440aaf221 | 6 | SDFileSystem sd(p5, p6, p7, p8, "sd"); |
okano | 0:81b440aaf221 | 7 | LocalFileSystem local("local"); |
okano | 0:81b440aaf221 | 8 | Serial pc(USBTX, USBRX); // tx, rx |
okano | 0:81b440aaf221 | 9 | |
okano | 0:81b440aaf221 | 10 | #define SOURCE_FILE "/sd/temp_log.txt" |
okano | 0:81b440aaf221 | 11 | #define TARGET_FILE "/local/temp_log.txt" |
okano | 0:81b440aaf221 | 12 | |
okano | 0:81b440aaf221 | 13 | #define COPY_BLOCK_SIZE 2048 |
okano | 0:81b440aaf221 | 14 | |
okano | 0:81b440aaf221 | 15 | int main() { |
okano | 0:81b440aaf221 | 16 | |
okano | 0:81b440aaf221 | 17 | FILE *fs_src; |
okano | 0:81b440aaf221 | 18 | FILE *fs_tgt; |
okano | 0:81b440aaf221 | 19 | char s[ COPY_BLOCK_SIZE ]; |
okano | 0:81b440aaf221 | 20 | int size; |
okano | 0:81b440aaf221 | 21 | int total = 0; |
okano | 0:81b440aaf221 | 22 | int progress_ind = 0; |
okano | 0:81b440aaf221 | 23 | |
okano | 0:81b440aaf221 | 24 | pc.printf( "\nfile copier started.\n" ); |
okano | 0:81b440aaf221 | 25 | pc.printf( " source:%s >>> target:%s\n", SOURCE_FILE, TARGET_FILE ); |
okano | 0:81b440aaf221 | 26 | |
okano | 0:81b440aaf221 | 27 | if ( NULL == (fs_src = fopen( SOURCE_FILE, "rb" )) ) |
okano | 0:81b440aaf221 | 28 | { |
okano | 0:81b440aaf221 | 29 | error( "couldn't open source file" ); |
okano | 0:81b440aaf221 | 30 | return ( 1 ); |
okano | 0:81b440aaf221 | 31 | } |
okano | 0:81b440aaf221 | 32 | if ( NULL == (fs_tgt = fopen( TARGET_FILE, "wb" )) ) |
okano | 0:81b440aaf221 | 33 | { |
okano | 0:81b440aaf221 | 34 | error( "couldn't open source file" ); |
okano | 0:81b440aaf221 | 35 | return ( 2 ); |
okano | 0:81b440aaf221 | 36 | } |
okano | 0:81b440aaf221 | 37 | |
okano | 0:81b440aaf221 | 38 | while ( size = fread( s, sizeof( char ), COPY_BLOCK_SIZE, fs_src ) ) |
okano | 0:81b440aaf221 | 39 | { |
okano | 0:81b440aaf221 | 40 | fwrite( s, sizeof( char ), size, fs_tgt ); |
okano | 0:81b440aaf221 | 41 | total += size; |
okano | 0:81b440aaf221 | 42 | |
okano | 0:81b440aaf221 | 43 | led = (0x1 << progress_ind++ % 4); |
okano | 0:81b440aaf221 | 44 | |
okano | 0:81b440aaf221 | 45 | pc.printf( " %d bytes copied\r", total ); |
okano | 0:81b440aaf221 | 46 | } |
okano | 0:81b440aaf221 | 47 | |
okano | 0:81b440aaf221 | 48 | led = 0xF; |
okano | 0:81b440aaf221 | 49 | |
okano | 0:81b440aaf221 | 50 | fclose( fs_src ); |
okano | 0:81b440aaf221 | 51 | fclose( fs_tgt ); |
okano | 0:81b440aaf221 | 52 | |
okano | 0:81b440aaf221 | 53 | pc.printf( "\ndone\n" ); |
okano | 0:81b440aaf221 | 54 | |
okano | 0:81b440aaf221 | 55 | } |