从 sd 卡中的 .txt 文件到 Arduino 中的字符串变量
From .txt file in sd card to string variable in Arduino
我正在尝试读取 Arduino SD 卡中的文本文件 reader 并将其文本复制到字符串变量中,但是函数 .read 总是 returns -1。我该如何解决这个问题?
代码如下:
#include <SPI.h>
#include <SD.h>
File mappa;
String text;
void setup() {
Serial.begin(9600);
while (!Serial) {
;
}
Serial.print("Initializing SD card...");
if (!SD.begin(4)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
mappa = SD.open("map.txt");
// if the file opened okay, write to it:
if (mappa) {
Serial.println("File aperto");
} else {
// if the file didn't open, print an error:
Serial.println("error opening map.txt");
}
Serial.println("map.txt:");
// read from the file until there's nothing else in it:
while (mappa.available()) {
Serial.write(mappa.read());
// text = parseInt(mappa.read());
}
Serial.println(text);
// close the file:
mappa.close();
}
void loop() {
// nothing happens after setup
}
我知道 .read()
returns 一个整数数组,但我不知道如何分别访问它们。
经过进一步研究,我了解了 .read
的工作原理:它读取光标指向的字符,同时前进光标。
因此,为了读取整个文件,您必须删除 Serial.write
部分并将字符转换为 char
:
String finalString = "";
while (mappa.available())
{
finalString += (char)mappa.read();
}
我正在尝试读取 Arduino SD 卡中的文本文件 reader 并将其文本复制到字符串变量中,但是函数 .read 总是 returns -1。我该如何解决这个问题?
代码如下:
#include <SPI.h>
#include <SD.h>
File mappa;
String text;
void setup() {
Serial.begin(9600);
while (!Serial) {
;
}
Serial.print("Initializing SD card...");
if (!SD.begin(4)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
mappa = SD.open("map.txt");
// if the file opened okay, write to it:
if (mappa) {
Serial.println("File aperto");
} else {
// if the file didn't open, print an error:
Serial.println("error opening map.txt");
}
Serial.println("map.txt:");
// read from the file until there's nothing else in it:
while (mappa.available()) {
Serial.write(mappa.read());
// text = parseInt(mappa.read());
}
Serial.println(text);
// close the file:
mappa.close();
}
void loop() {
// nothing happens after setup
}
我知道 .read()
returns 一个整数数组,但我不知道如何分别访问它们。
经过进一步研究,我了解了 .read
的工作原理:它读取光标指向的字符,同时前进光标。
因此,为了读取整个文件,您必须删除 Serial.write
部分并将字符转换为 char
:
String finalString = "";
while (mappa.available())
{
finalString += (char)mappa.read();
}