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@1:1a76280274de, 2010-09-22 (annotated)
- Committer:
- okano
- Date:
- Wed Sep 22 05:26:10 2010 +0000
- Revision:
- 1:1a76280274de
- Parent:
- 0:81b440aaf221
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 | 1:1a76280274de | 10 | //#define SOURCE_FILE "/local/source.jpg" |
okano | 1:1a76280274de | 11 | //#define TARGET_FILE "/sd/target.jpg" |
okano | 1:1a76280274de | 12 | |
okano | 0:81b440aaf221 | 13 | #define SOURCE_FILE "/sd/temp_log.txt" |
okano | 0:81b440aaf221 | 14 | #define TARGET_FILE "/local/temp_log.txt" |
okano | 0:81b440aaf221 | 15 | |
okano | 0:81b440aaf221 | 16 | #define COPY_BLOCK_SIZE 2048 |
okano | 0:81b440aaf221 | 17 | |
okano | 0:81b440aaf221 | 18 | int main() { |
okano | 0:81b440aaf221 | 19 | |
okano | 0:81b440aaf221 | 20 | FILE *fs_src; |
okano | 0:81b440aaf221 | 21 | FILE *fs_tgt; |
okano | 0:81b440aaf221 | 22 | char s[ COPY_BLOCK_SIZE ]; |
okano | 0:81b440aaf221 | 23 | int size; |
okano | 0:81b440aaf221 | 24 | int total = 0; |
okano | 0:81b440aaf221 | 25 | int progress_ind = 0; |
okano | 0:81b440aaf221 | 26 | |
okano | 0:81b440aaf221 | 27 | pc.printf( "\nfile copier started.\n" ); |
okano | 0:81b440aaf221 | 28 | pc.printf( " source:%s >>> target:%s\n", SOURCE_FILE, TARGET_FILE ); |
okano | 0:81b440aaf221 | 29 | |
okano | 0:81b440aaf221 | 30 | if ( NULL == (fs_src = fopen( SOURCE_FILE, "rb" )) ) |
okano | 0:81b440aaf221 | 31 | { |
okano | 0:81b440aaf221 | 32 | error( "couldn't open source file" ); |
okano | 0:81b440aaf221 | 33 | return ( 1 ); |
okano | 0:81b440aaf221 | 34 | } |
okano | 0:81b440aaf221 | 35 | if ( NULL == (fs_tgt = fopen( TARGET_FILE, "wb" )) ) |
okano | 0:81b440aaf221 | 36 | { |
okano | 1:1a76280274de | 37 | error( "couldn't open target file" ); |
okano | 0:81b440aaf221 | 38 | return ( 2 ); |
okano | 0:81b440aaf221 | 39 | } |
okano | 0:81b440aaf221 | 40 | |
okano | 0:81b440aaf221 | 41 | while ( size = fread( s, sizeof( char ), COPY_BLOCK_SIZE, fs_src ) ) |
okano | 0:81b440aaf221 | 42 | { |
okano | 0:81b440aaf221 | 43 | fwrite( s, sizeof( char ), size, fs_tgt ); |
okano | 0:81b440aaf221 | 44 | total += size; |
okano | 0:81b440aaf221 | 45 | |
okano | 0:81b440aaf221 | 46 | led = (0x1 << progress_ind++ % 4); |
okano | 0:81b440aaf221 | 47 | |
okano | 0:81b440aaf221 | 48 | pc.printf( " %d bytes copied\r", total ); |
okano | 0:81b440aaf221 | 49 | } |
okano | 0:81b440aaf221 | 50 | |
okano | 0:81b440aaf221 | 51 | led = 0xF; |
okano | 0:81b440aaf221 | 52 | |
okano | 0:81b440aaf221 | 53 | fclose( fs_src ); |
okano | 0:81b440aaf221 | 54 | fclose( fs_tgt ); |
okano | 0:81b440aaf221 | 55 | |
okano | 0:81b440aaf221 | 56 | pc.printf( "\ndone\n" ); |
okano | 0:81b440aaf221 | 57 | |
okano | 0:81b440aaf221 | 58 | } |