ESP32C3无法将数据实时写入TF卡中

espidk
Posts: 7
Joined: Mon Jul 17, 2023 5:42 am

ESP32C3无法将数据实时写入TF卡中

Postby espidk » Mon Jul 17, 2023 6:06 am

先贴代码。
环境:ESP32-C3,使用了console、vfs组件

Code: Select all

/**
 * @brief  缓存写入文件
 * @param  buf:存入缓存
 * @param  len:存入长度
 * @note   fclose+fopen可以立即存入文件
 */
void FS_SaveBufToFile(uint8_t *buf, int len)
{

    if(RecFile.state == 01)
    {
        fwrite(buf, len, 1, RecFile.REC);
        // fwrite(buf, 1, len, RecFile.REC);
        // fflush(RecFile.REC);
        // fsyncs(RecFile.REC);
        // pwrite(RecFile.REC, buf, len, 0);

        fclose(RecFile.REC);
        // vTaskDelay(100 / portTICK_PERIOD_MS);
        RecFile.REC = fopen(RecFile.path, "a+");
        // fprintf(RecFile.REC, "%s", buf);

        ESP_LOGI(TAG, "W");
    }
    return;
}
希望能实现的效果是该函数执行完后,直接取下TF卡,能看到数据已经被写入到文件中。
但是在尝试将数据写入TF卡时,发现数据不能立即写入到卡中。
无论是使用fprintf还是fwrite加fflush都无法立即写入,仅当使用fclose时才能写入数据。
目前只能不断的fclose+fopen,实在是太不优雅了 ;P

fat000x
Posts: 2
Joined: Tue Jul 18, 2023 7:49 am

Re: ESP32C3无法将数据实时写入TF卡中

Postby fat000x » Tue Jul 18, 2023 8:06 am

f.write()之后需要调用f.flush()才能真正把数据写入TF卡。

espidk
Posts: 7
Joined: Mon Jul 17, 2023 5:42 am

Re: ESP32C3无法将数据实时写入TF卡中

Postby espidk » Tue Jul 18, 2023 8:59 am

试过了,没成功就很费解。

Who is online

Users browsing this forum: No registered users and 156 guests