|
实现了SD卡的加载,于是继续实现文件的打开 SD卡里面有个data.txt文件,其内容是9 [& N2 g7 x* Z! B) w0 } 123 . E$ n# g8 `% Z2 u0 F/ B$ ~ abc 下面要实现对文件的打开操作 在main函数中添加如下代码 sta = f_open(&fil,"data.txt",FA_OPEN_ALWAYS | FA_READ); - o" w! j3 x7 K if(sta)2 u+ K: T, A; ? printf("SD Card open fail\r\n");8 z9 N5 E- O$ v9 @, `; [7 { else# G- W* D) | j& J( g8 }" M- o printf("SD Card open\r\n");. P$ Y& v; f$ I( M! l, x. r( J4 R 很顺利,没有打印fail& }+ f0 {$ F$ E( [" a& f& E) i9 c3 A 下面开始实现read文件,添加如下代码9 n* d% h$ e# \( k* Q6 } b# g 8 m7 q/ [+ Y0 d3 {3 e sta = f_read(&fil, buffer, 1, &br);5 K4 N# r4 l$ p if (sta == FR_OK ) , j7 I, d: o g3 N' P: q5 Y' k6 u { printf("\r\n f_read() ok .. \r\n"); for(len =0;len<br;len++)5 y% f3 t$ M, {6 v printf("%c",buffer[len]); ( v% ?7 s* ]) A5 H* r }else{ $ Z) y5 [" G8 z3 @0 i2 @ printf("\r\n f_read() fail .. \r\n"); $ e- j" w- J4 f; J% v) P } 输出结果是 f_read() ok .." I+ J. E" o; r; @$ t 1 j6 O2 p+ x3 B0 c! l5 V 没有完全读完文件内容1 X! s: U! _; S0 { 仔细看了f_read,每次只能返回1个字符,于是在外面加个for循环,问题解决 for(t=0;t<512;t++) {& I* B$ J. b3 N/ u6 \; u2 ] sta = f_read(&fil, buffer, 1, &br);2 J* {. v- r# k+ @ if (sta == FR_OK ) ' K; b2 g' m- M; L- Q( v { 6 _* }1 f' y6 h. r2 y // printf("\r\n f_read() ok .. \r\n");1 W9 M9 l' g' H! v for(len =0;len<br;len++) printf("%c",buffer[len]);* _* J& w; ^1 D; O' ] N. Y" u }else{ printf("\r\n f_read() fail .. \r\n"); } # w; S' g8 R9 ~. z; x; _ }2 d4 c$ T' m) o1 y* i8 J 打印结果见下图 $ e4 E5 G" f/ }9 V4 ] 4 ? }" V( q$ T% R4 K * w6 V- v0 F5 s5 a* c1 d A, H - v0 x9 ?: C& }: [ W7 `; G 发帖与2018年3月13日+ |: u) D! t/ m8 n, B1 W1 S! s |
微信公众号
手机版