OpenEdv-开源电子网

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

如何利用文件系统往U盘的TXT文档中写入AD采样值,而不仅仅是一串固定的字符?

[复制链接]

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2015-6-11
在线时间
0 小时
发表于 2015-7-6 16:41:27 | 显示全部楼层 |阅读模式
5金钱
看网上分享出来的很多U盘,文件系统的历程里面,往文件里面写入数据,写入的都是不变的数据。例如
result = f_write(&file, "FatFS Write Demo \r\n www.armfly.com \r\n", 34, &bw);中的"FatFS Write Demo \r\n www.armfly.com \r\n";
而我现在需要将AD转换的结果写入文本文档中,试了一下午了,发现写入的是一堆乱码,不知道哪儿出了问题。下面是我的程序,麻烦各位大神帮忙看看:
static void CreateNewFile(void)
{
    FRESULT result;
    FATFS fs;
    FIL file;
    DIR DirInf;
    uint32_t bw;
    extern vu16 After_filter[M]; //用来存放求AD平均值之后的结果。
    u16 writeTextBuff;
    u16 bytesToWrite;
    u8 i;
  /* 挂载文件系统 */
result = f_mount(0, &fs); /* Mount a logical drive */
/* 打开根文件夹 */
result = f_opendir(&DirInf, "/"); /* 如果不带参数,则从当前目录开始 */
if (result != FR_OK)
{
    usb_printf("打开根目录失败 (%d)\r\n", result);
    return;
}

/* 打开文件 */
result = f_open(&file, "test.txt", FA_CREATE_ALWAYS | FA_WRITE);

/* 写一串数据 */
for(i=0;i<M;i++)
{
    writeTextBuff =  After_filter;
    bytesToWrite = sizeof(writeTextBuff);
    result = f_write(&file, (const void *)writeTextBuff, bytesToWrite, &bw);
    if (result == FR_OK)
    {
        usb_printf("test.txt 文件写入成功\r\n");
    }
    else
    {
        usb_printf("test.txt 文件写入失败\r\n");
    }
}

// result = f_write(&file, "FatFS Write Demo \r\n www.armfly.com \r\n", 34, &bw);
// if (result == FR_OK)
// {
// usb_printf("test.txt 文件写入成功\r\n"); After_filter[M];
// }
// else
// {
// usb_printf("test.txt 文件写入失败\r\n");
// }

/* 关闭文件*/
f_close(&file);

/* 卸载文件系统 */
f_mount(0, NULL);
}

最佳答案

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

sprintf,写入数组,然后将数组写入文件就可以了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-6 16:41:28 | 显示全部楼层
sprintf,写入数组,然后将数组写入文件就可以了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2015-6-11
在线时间
0 小时
 楼主| 发表于 2015-7-7 14:31:22 | 显示全部楼层
原子哥,你看我这样可以不:
extern vu16 After_filter[M]; //用来存放求平均值之后的结果
FRESULT result;
char buffer[20];
u16 writeTextBuff;
u16 bytesToWrite;  
/* 写一串数据到该文件 */
for(i=0;i<M;i++)
{
writeTextBuff =  After_filter;
bytesToWrite = sizeof(writeTextBuff);   
sprintf(buffer,"%d",writeTextBuff);
result = f_write(&file,buffer, bytesToWrite, &bw);
}
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-7 23:09:05 | 显示全部楼层
回复【3楼】师兄,帮帮忙:
---------------------------------
实际测试下
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2015-6-11
在线时间
0 小时
 楼主| 发表于 2015-7-8 09:14:24 | 显示全部楼层
恩,我试了下,这样可以。昨天是,我232转USB接口被别人拿走了,没来得及测。谢谢原子哥!
回复

使用道具 举报

16

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
149
金钱
149
注册时间
2013-7-25
在线时间
1 小时
发表于 2015-7-24 11:00:04 | 显示全部楼层
师兄,我也在做AD采样将数据保存至SD卡,保存数据有乱码,能将你这部分代码贴出来,看看么?我读取也有问题。我邮箱1474360488@qq.com
谢谢师兄
回复

使用道具 举报

16

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
149
金钱
149
注册时间
2013-7-25
在线时间
1 小时
发表于 2015-7-24 11:01:18 | 显示全部楼层
我存进去的是浮点数据,在液晶上看不到,但是在电脑上可以打开看到,但前面一部分是乱码
回复

使用道具 举报

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2015-6-11
在线时间
0 小时
 楼主| 发表于 2015-7-24 14:51:18 | 显示全部楼层
恩,稍等,我整理下代码,发上去。
回复

使用道具 举报

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2015-6-11
在线时间
0 小时
 楼主| 发表于 2015-7-24 14:54:29 | 显示全部楼层
读写都在<usbh_usr.c>中的USBH_USR_MSC_Application

USB_APP.zip

8.76 KB, 下载次数: 1004

回复

使用道具 举报

3

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
282
金钱
282
注册时间
2016-11-5
在线时间
63 小时
发表于 2017-9-7 14:00:29 | 显示全部楼层
你是讲SD卡放在电脑上看到乱码吗? 如果是怎正常,因为没有按照TXT的文件格式存入数据,从电脑上打开肯定是一堆字符乱码!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 03:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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