|
实现了SD卡的加载,于是继续实现文件的打开 SD卡里面有个data.txt文件,其内容是" W S! Q }$ ?% } 123 abc) I* B1 R, k6 ?" T 下面要实现对文件的打开操作 在main函数中添加如下代码 sta = f_open(&fil,"data.txt",FA_OPEN_ALWAYS | FA_READ); 5 G E3 m/ P1 b- K3 o/ F( k( H3 U if(sta): K3 T; `6 g: U# b( @- L printf("SD Card open fail\r\n"); else printf("SD Card open\r\n");5 c* }' }# n* L& G9 x% E0 E+ x. Q 很顺利,没有打印fail# M9 O" }9 Y8 e1 R+ ?, k) \6 C 下面开始实现read文件,添加如下代码, p9 ~. t8 B0 Z( @ % b) B0 v( H3 U4 a8 ] sta = f_read(&fil, buffer, 1, &br);* O6 m& @2 I. h) [( V. l# q' X if (sta == FR_OK ) { & S; @; y6 M# J5 Y- x- Y9 c2 u printf("\r\n f_read() ok .. \r\n"); # @: W% x4 ?2 g: v% m$ e for(len =0;len<br;len++) printf("%c",buffer[len]);' p7 r! o, e3 [/ ?, q }else{ printf("\r\n f_read() fail .. \r\n"); # E" j. a$ R8 k4 x9 ^ } 输出结果是) P1 B' d( r% G( T f_read() ok .. 1! G9 w5 o7 U! t5 G. |* P8 L! Z: g( A 没有完全读完文件内容) W |( z8 q: N, t, G 仔细看了f_read,每次只能返回1个字符,于是在外面加个for循环,问题解决 for(t=0;t<512;t++)# [* G& [, x8 p {9 N l8 b, r4 _ sta = f_read(&fil, buffer, 1, &br); if (sta == FR_OK ) { 8 e1 ]: Y5 t' G2 J3 v; h8 n7 z, k. v // printf("\r\n f_read() ok .. \r\n");, H F Y9 @+ p2 s* [4 l. u for(len =0;len<br;len++) printf("%c",buffer[len]); }else{ ) v% x8 c" ~( Q4 @) Q, d& k printf("\r\n f_read() fail .. \r\n"); } } 打印结果见下图6 X/ {* \+ A& U( S9 Y $ B$ h, {6 T9 h" c ) @+ i: Y0 |! p8 Z8 v" J- v' s " t8 u% Z+ t: l0 w' m5 ~- x 发帖与2018年3月13日 |
微信公众号
手机版