Я использую XDRduino UNO с Ethernet-экраном. На нем у меня есть карточка micro sd с текстовым файлом. Я хочу прочитать определенную строку текста из файла на основе номера строки. Файл очень большой, поэтому я не могу хранить все в массиве, и я не могу хранить каждую строку в массиве, а затем очищать массив, потому что, например, этот код занимает минуту для строки номера 65000.Arduino: изменить положение, в котором следующий байт читается в файле
Я отформатировал файл с помощью Python так, чтобы все линии имели одинаковую длину. Моя идея состояла в том, чтобы использовать функцию seek() для изменения позиции, из которой считывается файл (умножая длину строки по номеру строки, чтобы просмотреть нужную мне строку). Проблема заключается в том, что ни функции seek(), ни seekSet() не меняют положение, из которого читается следующий байт. Я также попытался изменить значение функции position(), но это тоже не работает.
Любые идеи?
#include <SD.h>
File myFile;
char StringList [50];
int ListIndex = 0;
char character;
void setup() // run once, when the sketch starts
{
Serial.begin(9600); // set up Serial library at 9600 bps
//just added
while (!Serial) {
}
//end of just added
Serial.println("Hello world!"); // prints hello with ending line break
//just added
Serial.print("Initializing...");
pinMode(10, OUTPUT);
if(!SD.begin(4)){
Serial.println("Failure");
return;
}
Serial.println("Initialization done.");
//end of just added
//myFile = SD.open("AverageVoltageOutputspassiveFilterHigherRes.txt");
myFile = SD.open("testing.txt");
if (myFile) {
while (myFile.available()){
//myFile.seek(500); //THIS DOES NOT CHANGE POSITION
if (myFile.position() == 500) {
character = myFile.read();
if (character != 0X0A) {
StringList[ListIndex] = character;
ListIndex++;
}else {
ListIndex++;
Serial.println(StringList);
break;
}
}
else{
Serial.println("File Position Wrong");
break;
}
}
}
else {
Serial.println("Fuck!");
}
}
void loop() // run over and over again
{
// do nothing!
}