OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 20842|回复: 22

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

[复制链接]

4

主题

84

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2013-10-17
在线时间
9 小时
发表于 2014-7-20 19:49:04 | 显示全部楼层 |阅读模式
5金钱
最近在移植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。。。。。。。。

最佳答案

查看完整内容[请看2#楼]

我直接把我写好的工程打包上传吧,你可以看看代码.FATFS使用最新的版本.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2016-1-8
在线时间
34 小时
发表于 2014-7-20 19:49:05 | 显示全部楼层
我直接把我写好的工程打包上传吧,你可以看看代码.FATFS使用最新的版本. FATFS(R0.12a)工程模版.rar (7.73 MB, 下载次数: 33417)
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-7-20 23:20:19 | 显示全部楼层
你读到的是多少?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-7-21 08:24:02 | 显示全部楼层
读取显示的是多少?
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

4

主题

84

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2013-10-17
在线时间
9 小时
 楼主| 发表于 2014-7-21 08:56:44 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
LCD上显示的是49
回复

使用道具 举报

4

主题

84

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2013-10-17
在线时间
9 小时
 楼主| 发表于 2014-7-21 08:57:51 | 显示全部楼层
回复【3楼】Badu_Space:
---------------------------------
LCD上显示的是49,我另外在.txt文件里面写进Success,可以在LCD上读出来
回复

使用道具 举报

4

主题

84

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2013-10-17
在线时间
9 小时
 楼主| 发表于 2014-7-21 11:40:42 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,这个显示的49和123是不是还要什么转换呢?
回复

使用道具 举报

4

主题

84

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2013-10-17
在线时间
9 小时
 楼主| 发表于 2014-7-21 15:00:30 | 显示全部楼层
回复【3楼】Badu_Space:
---------------------------
请问这个显示的49和123是不是还要什么转换呢?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-7-21 23:50:08 | 显示全部楼层
回复【7楼】498650771:
---------------------------------
文本文件存储的都是ASCII内容,如果你以16进制格式显示出来,那就是ASCII的内码。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

84

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2013-10-17
在线时间
9 小时
 楼主| 发表于 2014-7-22 09:35:49 | 显示全部楼层
回复【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);   //显示读出的数据
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-7-23 00:24:22 | 显示全部楼层
回复【9楼】498650771:
---------------------------------
你检查下f_read后,br的值是多少?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

84

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2013-10-17
在线时间
9 小时
 楼主| 发表于 2014-7-24 21:56:16 | 显示全部楼层
回复【10楼】正点原子:
---------------------------------
br的值返回是3
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-7-24 23:20:21 | 显示全部楼层
回复【11楼】498650771:
---------------------------------
说明读出了3个数据
你看看buffer里面,是3个什么数据?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

84

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2013-10-17
在线时间
9 小时
 楼主| 发表于 2014-7-25 09:48:27 | 显示全部楼层
回复【12楼】正点原子:
---------------------------------
昨晚试了把.txt里面的123分别读出来,然后用LCD_ShowNum()分别显示,可以单独显示123各自对应的ASCII码,说明了在.txt文件里没有默认把123当成一体,而是分开的。如果用sprintf((char*)table,"%d",date_temp);来全部打印成字符串然后用LCD_ShowString()显示,就会进入HardFault_Handler这个死循环里面。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-7-25 23:37:31 | 显示全部楼层
回复【13楼】498650771:
---------------------------------
说明读出来的数据没问题了.
是数据处理上的问题了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2016-5-13
在线时间
6 小时
发表于 2016-5-13 16:21:19 | 显示全部楼层
498650771 发表于 2014-7-25 09:48
回复【12楼】正点原子:
---------------------------------
昨晚试了把.txt里面的123分别读出来,然后 ...

原子哥,为何读.txt或其他格式的文件,先读出来的不是文件属性吗,比如文件类型,文件大小。。。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-5-13 20:06:18 | 显示全部楼层
151xxxx5266 发表于 2016-5-13 16:21
原子哥,为何读.txt或其他格式的文件,先读出来的不是文件属性吗,比如文件类型,文件大小。。。

属性就是个后缀 名而已。。。读取文件名就知道属性了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2016-5-13
在线时间
6 小时
发表于 2016-5-14 16:45:23 | 显示全部楼层
正点原子 发表于 2016-5-13 20:06
属性就是个后缀 名而已。。。读取文件名就知道属性了。

读BMP文件先读到的是属性类的东西,而txt直接读到的就是文件内容,是不是文本文件读出来的就是文件内容,其他格式文件先出来的是属性类的信息?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-5-14 19:51:32 | 显示全部楼层
151xxxx5266 发表于 2016-5-14 16:45
读BMP文件先读到的是属性类的东西,而txt直接读到的就是文件内容,是不是文本文件读出来的就是文件内容, ...

这和你存储的方式有关。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2014-2-16
在线时间
5 小时
发表于 2017-6-11 20:22:07 | 显示全部楼层
cancundiudiu 发表于 2016-8-15 13:03
我直接把我写好的工程打包上传吧,你可以看看代码.FATFS使用最新的版本.

x谢谢分享
回复

使用道具 举报

8

主题

185

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2019-7-15
在线时间
47 小时
发表于 2019-8-19 08:55:26 | 显示全部楼层
感谢分享,
回复

使用道具 举报

8

主题

185

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2019-7-15
在线时间
47 小时
发表于 2019-8-19 08:56:12 | 显示全部楼层
感谢分享,也谢谢回复的内容!
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2021-3-27
在线时间
0 小时
发表于 2021-4-3 13:57:48 | 显示全部楼层
我也出现了同样情况,写在txt里的数据被分割了。不知怎么操作
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-26 10:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表