FATFS实现数据追加功能(原文不覆盖)

        在对FATFS的应用中我们经常需要把采集的数据存入的文件中,用作保存。也许我们的系统是一个长期的运行过程,但是我们的数据可能不是持续采集的,所以我们这样写代码

    /*注册一个工作区域*/
    f_mount(0,&fs);			   
    
    /* 打开创建一个新文件 */
    res=f_open(&fdst,"0:/DATA.CSV",FA_CREATE_NEW | FA_WRITE);  

    /* 写入标题数据 */
    res=f_write(&fdst,"年-月-日-时-分-秒,fix,track\n",29,&bw);

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

     /* 数据转换 */
    size = format_data(text,324,12585);

     /* 打开文件 */
    res=f_open(&fdst,"0:/DATA.CSV",FA_OPEN_EXISTING | FA_WRITE);

    /* 写入数据 */
    res=f_write(&fdst,text,size,&bw);

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


但是我们实验之后发现没有达到我们想要的效果,之前的标题已经被覆盖了

FATFS实现数据追加功能(原文不覆盖)_第1张图片


那么如何实现呢,其实FATFS替我们考虑好了,只需要一个小函数f_lseek,,见代码


    /*注册一个工作区域*/
    f_mount(0,&fs);			   
    
    /* 打开创建一个新文件 */
    res=f_open(&fdst,"0:/DATA.CSV",FA_CREATE_NEW | FA_WRITE);  

    /* 写入标题数据 */
    res=f_write(&fdst,"年-月-日-时-分-秒,fix,track\n",29,&bw);

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

     /* 数据转换 */
    size = format_data(text,324,12585);

     /* 打开文件 */
    res=f_open(&fdst,"0:/DATA.CSV",FA_OPEN_EXISTING | FA_WRITE);

    /* 查找文件的结尾 */
    res=f_lseek(&fdst,f_size(&fdst));

    /* 写入数据 */
    res=f_write(&fdst,text,size,&bw);


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

此时我们下载程序在查看,发现成功了

FATFS实现数据追加功能(原文不覆盖)_第2张图片

关于f_lseek函数,我们做如下解释:

用于移动一个已打开文件的读写的指针,在代码中我们就是将写指针移到了文件的最后这样就实现饿了文件的续写功能!

你可能感兴趣的:(C)