问题描述
我正在尝试使用 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 (将#修改为@)