FATFS文件系统移植读取文件里面数据

2019-08-17 08:39发布

最近在移植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。。。。。。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
498650771
1楼-- · 2019-08-18 06:58
 精彩回答 2  元偷偷看……
正点原子
2楼-- · 2019-08-18 11:17
回复【7楼】498650771:
---------------------------------
文本文件存储的都是ASCII内容,如果你以16进制格式显示出来,那就是ASCII的内码。
498650771
3楼-- · 2019-08-18 17:09
回复【8楼】正点原子:
---------------------------------
谢谢原子哥,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);   //显示读出的数据
正点原子
4楼-- · 2019-08-18 17:21
回复【9楼】498650771:
---------------------------------
你检查下f_read后,br的值是多少?
498650771
5楼-- · 2019-08-18 20:37
回复【10楼】正点原子:
---------------------------------
br的值返回是3
正点原子
6楼-- · 2019-08-18 21:41
 精彩回答 2  元偷偷看……

一周热门 更多>