Как я понял библиотека SD для ардуино не работает на esp, нужен FS.h функции которого к тому же должны находится в коде и действия с sd картой производить там же а это кучу флажков плодить для записи нескольких параллельных записей. Но это ладно, а как собственно работает чтение файла в формате символов? в консоль записи в текстовом файле выводить только как Serial.write(); а Serial.print() выводит не символы а цифры. А мне нужно файлы хранить в переменной String. Как работает чтение собственно в этой библиотеке
#include "FS.h"
#include "SD.h"
#include "SPI.h"
String gret;
int varTime;
void readFile(fs::FS &fs, const char * path){
Serial.printf("Reading file: %s\n", path);
File file = fs.open(path);
if(!file){
Serial.println("Failed to open file for reading");
return;
}
Serial.print("Read from file: ");
while(file.available()){
Serial.write(file.read());
Serial.println(file.read());
gret = file.read();
}
file.close();
}
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 * path, const char * message){
Serial.printf("Appending to file: %s\n", path);
File file = fs.open(path, 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");
}
writeFile(SD, "/hello.txt", "Hello ");
appendFile(SD, "/hello.txt", "World!");
readFile(SD, "/hello.txt");
}
void loop(){
if(millis()-varTime > 2000){
// = readFile(SD, "/foo.txt");
Serial.println(gret);
varTime = millis();
}
}
#include "SD.h"
#include "SPI.h"
String gret;
int varTime;
void readFile(fs::FS &fs, const char * path){
Serial.printf("Reading file: %s\n", path);
File file = fs.open(path);
if(!file){
Serial.println("Failed to open file for reading");
return;
}
Serial.print("Read from file: ");
while(file.available()){
Serial.write(file.read());
Serial.println(file.read());
gret = file.read();
}
file.close();
}
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 * path, const char * message){
Serial.printf("Appending to file: %s\n", path);
File file = fs.open(path, 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");
}
writeFile(SD, "/hello.txt", "Hello ");
appendFile(SD, "/hello.txt", "World!");
readFile(SD, "/hello.txt");
}
void loop(){
if(millis()-varTime > 2000){
// = readFile(SD, "/foo.txt");
Serial.println(gret);
varTime = millis();
}
}
Вложения
-
12.2 KB Просмотры: 28