最近在移植FATFS文件系统,想用mini stm32板读出.txt文件里面的数据,事先已经在SD卡中建好了.txt文件,并在里面写有数据123,用f_read();可以读,但是显示在stm32上的却不是123,有谁知道怎么读出这个数据吗?谢谢了!
BYTE buffer,*date_temp;
u8 table[15];
FIL fil;
u8 file_byte; //获取文件大小
UINT br,bw;
date_temp=&buffer;
res=f_open(&fil,"0:/data1.txt",FA_OPEN_EXISTING|FA_READ);//
if(res)return; //打开文件错误
res = f_read(&fil,date_temp,sizeof(buffer),&br);
if (res||br==0)goto close; /* 文件结束错误 */
sprintf((char*)table,"%d",*date_temp);
LCD_ShowString(60,138,table); //显示读出的数据
file_byte=f_size(&fil); //获取文件大小
LCD_ShowAllNum(60,154,file_byte,3,16);
close: f_close(&fil);
在这段程序中可以读数据,但是显示不是123。。。。。。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
谢谢原子哥,1对应的ASCII码是49,我的代码中date_temp是一个指针,指针指向了buffer,或许在f_read()中这个date_temp应该要分配一个内存空间吧,而不是用指针来取数,但是怎么会只读出123中的1呢,而不是都把整个数据读出来?另外我又用f_write()写入100,用f_read()可以正确读出100,代码如下面:
UINT bw;
u8 temp_buffer[7],date_buffer[7];
temp_buffer[0]=100;
res=f_write(&fil,&temp_buffer[0],1,&bw);
res = f_read(&fil,date_temp,sizeof(buffer),&br);
if (res||br==0)goto close; /* 文件结束错误 */
sprintf((char*)table,"%d",date_temp[0]);
LCD_ShowString(60,138,table); //显示读出的数据
一周热门 更多>