微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用 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 举报,一经查实,本站将立刻删除。