|
实现了SD卡的加载,于是继续实现文件的打开 SD卡里面有个data.txt文件,其内容是 123 abc, B7 G/ t G1 M ` 下面要实现对文件的打开操作0 u7 j) X) Y( r* a( `& g8 ]9 u 在main函数中添加如下代码* Y0 f/ I0 f0 y# ~: x/ b( _0 `2 _ sta = f_open(&fil,"data.txt",FA_OPEN_ALWAYS | FA_READ); if(sta) printf("SD Card open fail\r\n"); else printf("SD Card open\r\n"); 很顺利,没有打印fail 下面开始实现read文件,添加如下代码 ; R$ U3 f% j4 H) p. t `8 w4 l sta = f_read(&fil, buffer, 1, &br); if (sta == FR_OK ) { V4 I3 G4 g, F, G printf("\r\n f_read() ok .. \r\n");$ x7 q* M1 j* y! v- x ! | W/ n7 z) r6 J) F6 f* C for(len =0;len<br;len++) printf("%c",buffer[len]);) W5 ]* m) n: s/ C+ a5 h! t: w9 ] }else{ printf("\r\n f_read() fail .. \r\n"); } 6 m; f7 G2 @4 D i/ g% o# N9 @% I 输出结果是 f_read() ok ..( S6 e$ [& }2 \! d4 v 1* h8 c, L" x G5 f4 f 没有完全读完文件内容; Y6 u8 B: z+ f% |* b 仔细看了f_read,每次只能返回1个字符,于是在外面加个for循环,问题解决 for(t=0;t<512;t++)8 c- F( H, f0 r! ]' p7 f$ h {' \& P! g5 `& r6 t sta = f_read(&fil, buffer, 1, &br); if (sta == FR_OK ) { ; y" T/ q1 l/ w6 Q // printf("\r\n f_read() ok .. \r\n");5 i; y) }+ M1 N; ?) p, z for(len =0;len<br;len++)$ a+ t6 g, V$ h& R8 O. j, m5 i+ x printf("%c",buffer[len]);% I2 L0 z( ]7 J4 ?( a, A# @ 3 B, G+ s* z+ g* F }else{ 5 a4 x% ~" N8 p! f3 X printf("\r\n f_read() fail .. \r\n"); } } 打印结果见下图# B- B3 P: {$ V! @ l n$ e8 }0 D9 h5 M* L/ M + N0 X |5 L5 v9 ~2 G! Y: h& t& X' V - T7 z4 n/ |, s . Z" M* y/ _! y2 p 发帖与2018年3月13日: ?: H8 B, F9 F |
微信公众号
手机版