实现了SD卡的加载,于是继续实现文件的打开 SD卡里面有个data.txt文件,其内容是% \5 z9 N7 Y8 Y9 O. ` j& `+ D) n 123 abc! p+ F" ^6 H) g0 j( s 下面要实现对文件的打开操作 在main函数中添加如下代码0 ? F0 y/ k( u% R% ]! d- b sta = f_open(&fil,"data.txt",FA_OPEN_ALWAYS | FA_READ); if(sta)! I, R0 T6 k: _7 k printf("SD Card open fail\r\n"); else. J# W) Y# Z* h/ t# I$ j printf("SD Card open\r\n"); 很顺利,没有打印fail 下面开始实现read文件,添加如下代码 3 r; \( Q+ B2 i, M6 t3 A sta = f_read(&fil, buffer, 1, &br); if (sta == FR_OK ) - r5 f0 ^6 |' P" n { printf("\r\n f_read() ok .. \r\n");2 Q1 Q$ ~. d) I% a for(len =0;len<br;len++): k7 j8 L0 F% M: S# K% q6 \ printf("%c",buffer[len]);- J1 j5 m5 n. }" I! B . {1 i3 s" B4 y8 A0 A7 M }else{ printf("\r\n f_read() fail .. \r\n"); } 输出结果是5 V; X# v5 i" U/ z, ~8 v f_read() ok .. 1 没有完全读完文件内容" b4 _6 ^4 U& w, Z 仔细看了f_read,每次只能返回1个字符,于是在外面加个for循环,问题解决 for(t=0;t<512;t++) {4 z& D( {3 @3 J# z" U f sta = f_read(&fil, buffer, 1, &br); if (sta == FR_OK ) 1 b! t( c; {) c$ _/ \( a { // printf("\r\n f_read() ok .. \r\n");; W% A( c5 | x4 y " |. ^/ T* s) |9 v ` for(len =0;len<br;len++)' I0 V7 a& ?2 |$ f printf("%c",buffer[len]); " W8 F+ |2 B) g+ r }else{ printf("\r\n f_read() fail .. \r\n"); } } 打印结果见下图8 G. y: I, p+ x , {6 I- C* _1 w7 k9 X * l3 ]; {& O; { . G% y3 m: d& b3 W K) k9 U 发帖与2018年3月13日 |