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