搜索
bottom↓
回复: 14

利用fatfs文件系统实现了SD卡追加内容,但是txt显示...

[复制链接]

出0入0汤圆

发表于 2013-6-8 10:26:33 | 显示全部楼层 |阅读模式
本帖最后由 zsz2008610 于 2013-6-8 10:46 编辑

在fatfs文件系统下,实现SD卡的读取追加内容,实现方法是:读取文件、偏移指针、填写内容。追加内容时需要利用f_sleek函数将指针移到文本尾部,再写问容,具体实现main函数的功能是两个按键来控制添加不同的内容,按键1按下时添加 BYTE sample_buffer[] = "2710,2712,2711,2715,1234,2134,4567,7890 \r\n";按键2按下时添加 BYTE sample_buffer1[] = "1,2,3,4,5,6,7,8,9,0 \r\n";
printf 调试用,
问题是:保存到txt文件中的数据不规则,应该是每一行数据都是靠左边对齐才对,实际是如附件图片所示。


程序:

while (1)
  {   
       if( Key_Scan(GPIOE,GPIO_Pin_5) == KEY_ON)//按键1按下时添加 sample_buffer中内容
       {
            printf( "\r\n KEY1 PE5  \n" );//串口输出调试信息
             /* 将采样数据的数据写到文件中 先打开,打开成功后再追加文本*/
            res = f_open(&fdst,"0:/Demo.TXT", FA_WRITE);//打开文本,while之前已经        f_mount(0,&fs);

          if( res == FR_OK)
          {
            printf( "\r\n SD has opened  \n" );
             /* Move to end of the file to append data */
                  res = f_lseek(&fdst, f_size(&fdst));   
                res = f_write(&fdst, sample_buffer, sizeof(sample_buffer), &bw);
                 f_close(&fdst);
             printf( "\r\n sample_buffer \n" );
          }
       }
          if( Key_Scan(GPIOE,GPIO_Pin_6) == KEY_ON) //按键2按下时添加 sample_buffer1中内容
       {
            printf( "\r\n KEY2 PE6  \n" );
             /* 将采样数据的数据写到文件中 */
            res = f_open(&fdst,"0:/Demo.TXT", FA_WRITE);

          if( res == FR_OK)
          {
             printf( "\r\n SD has opened  \n" );
             /* Move to end of the file to append data */
                  res = f_lseek(&fdst, f_size(&fdst));   
                res = f_write(&fdst, sample_buffer1, sizeof(sample_buffer), &bw);
                 f_close(&fdst);
             printf( "\r\n sample_buffer1 \n" );
          }
       }        
  }

试验结果:txt文本内容
实际显示内容对齐方式是:

感谢您选用 野火STM32开发板 !^_^
1,2,3,4,5,6,7,8,9,0
                     1,2,3,4,5,6,7,8,9,0
                     1,2,3,4,5,6,7,8,9,0
                     1,2,3,4,5,6,7,8,9,0
                     1,2,3,4,5,6,7,8,9,0
                     2710,2712,2711,2715,1234,2134,4567,7890
2710,2712,2711,2715,1234,2134,4567,7890
2710,2712,2711,2715,1234,2134,4567,7890
1,2,3,4,5,6,7,8,9,0
                     1,2,3,4,5,6,7,8,9,0
                     1,2,3,4,5,6,7,8,9,0

理论或是理想中的显示内容对齐方式是:

感谢您选用 野火STM32开发板 !^_^
1,2,3,4,5,6,7,8,9,0
1,2,3,4,5,6,7,8,9,0
1,2,3,4,5,6,7,8,9,0
1,2,3,4,5,6,7,8,9,0
1,2,3,4,5,6,7,8,9,0
2710,2712,2711,2715,1234,2134,4567,7890
2710,2712,2711,2715,1234,2134,4567,7890
2710,2712,2711,2715,1234,2134,4567,7890
1,2,3,4,5,6,7,8,9,0
1,2,3,4,5,6,7,8,9,0
1,2,3,4,5,6,7,8,9,0

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2013-6-8 10:54:20 | 显示全部楼层
\r 和 \n 的问题

出0入0汤圆

发表于 2013-6-8 11:02:28 | 显示全部楼层
楼主只用\n试试

出0入0汤圆

 楼主| 发表于 2013-6-8 11:09:01 | 显示全部楼层
不使用\r\n; 使用\n; 使用\r\n 三种方式都不行,请查看附件,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-6-8 21:23:20 | 显示全部楼层
问题已解决,是由于第二个写操作有误,取数组大小时的名称用错,用成了另一个数组,应是:  res = f_write(&fdst, sample_buffer1, sizeof(sample_buffer1), &bw);
所以以上方法是没有问题的。

出0入4汤圆

发表于 2013-12-10 15:32:21 | 显示全部楼层
学习了!

出0入0汤圆

发表于 2014-4-16 09:36:31 | 显示全部楼层
mark                                             

出0入0汤圆

发表于 2014-8-8 20:11:53 | 显示全部楼层
为何,我用你这个程序就不能换行呢?能否把代码上传

出0入0汤圆

发表于 2014-9-1 12:01:14 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2014-9-28 19:41:33 | 显示全部楼层
刚刚好用到,谢谢楼主了。

出0入0汤圆

发表于 2014-10-24 15:02:51 | 显示全部楼层
大牛牛               

出0入0汤圆

发表于 2014-10-28 11:42:14 | 显示全部楼层
学习这种方法了 马上去试试

出0入0汤圆

发表于 2014-11-13 10:57:58 | 显示全部楼层
此帖要收下来,刚好要用到。

出0入0汤圆

发表于 2015-1-10 18:04:23 来自手机 | 显示全部楼层
我也实验一下

出0入0汤圆

发表于 2017-7-14 09:30:00 | 显示全部楼层
源程序能否上传,谢谢。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-22 01:47

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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