使用 esp32 登录时 Micro SD 卡中的数据丢失

问题描述

我正在尝试使用 esp32 在 micro SD 卡中的文本文件中保存一些值。该代码每秒保存 20 个由串行监视器确认的值。但是当我后来转到 SD 卡时,只存储了少量值。缺少大约 90% 的值。可能是什么问题呢?我的 SD 卡类型是 SDHC。 代码如下:

#include "SD.h"
#include <SPI.h>

int x = 1;
int y = 2;
int z = 3;
String datamsg;

#define SD_CS 5
File myFile;

void writeFile(fs::FS &fs,const char * path,const char * message){
Serial.printf("Writing file: %s\n",path);

File file = fs.open(path,FILE_WRITE);
if(!file){
    Serial.println("Failed to open file for writing");
    return;
}
if(file.print(message)){
    Serial.println("File written");
} else {
    Serial.println("Write Failed");
}
file.close();
}

void appendFile(fs::FS &fs,const char * message){
Serial.printf("Appending to file: %s\n",FILE_APPEND);
if(!file){
    Serial.println("Failed to open file for appending");
    return;
}
if(file.print(message)){
    Serial.println("Message appended");
} else {
    Serial.println("Append Failed");
}
file.close();
}


void setup(){
Serial.begin(115200);
if(!SD.begin()){
    Serial.println("Card Mount Failed");
    return;
}
uint8_t cardType = SD.cardType();

if(cardType == CARD_NONE){
    Serial.println("No SD card attached");
    return;
}

Serial.print("SD Card Type: ");
if(cardType == CARD_MMC){
    Serial.println("MMC");
} else if(cardType == CARD_SD){
    Serial.println("SDSC");
} else if(cardType == CARD_SDHC){
    Serial.println("SDHC");
} else {
    Serial.println("UNKNowN");
}

uint64_t cardSize = SD.cardSize() / (1024 * 1024);
Serial.printf("SD Card Size: %lluMB\n",cardSize);

datamsg = (String(x)+ ","+String(y)+","+String(z)+",\n");
writeFile(SD,"/data.txt",datamsg.c_str());  
}


void loop(){
datamsg = (String(x)+ ",\n");

appendFile(SD,datamsg.c_str());
Serial.println(datamsg);
delay(50);
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...