Arduino. Как запись данные в массив из SD карты? Суть такова, получается записать данные на карту памяти для временного хранения: File dataFile = SD.open("datalog.txt", FILE_WRITE);
if (dataFile) {
dataFile.println(dataString);
dataFile.close(); }
С небольшим изменением получаем файл, в котором есть массив следующего вида:6, 233, 453, 323, 676, 213, 673
К сожалению не могу разобраться, как правильно получить данные с sd карты в переменную. Я создал массив int mass[РАЗМЕР ПОЛУЧАЕТСЯ СЧИТЫВАЕМ ПЕРВОГО ЭЛЕМЕНТА МАССИВА С КАРТЫ];
а вот далее у меня не получается записать поэлементно значения массива с карты памяти, такой пример мне не подходит:myFile = SD.open("test.txt");
if (myFile) {
Serial.println("test.txt:");
while (myFile.available()) {
Serial.write(myFile.read());
}
myFile.close();
Как я понял, чтение из порта идет по байтам и нужно как-то реализовать разбор запятых и длина значения массива ведь может быть один символ (5) а может быть и три (246). Подскажите пожалуйста как реализовать, чтобы можно было без ошибочно вывести данные с карты sd в массив?

21 Авг 2019 в 06:23
342 +1
1
Ответы
1

Для того чтобы правильно считать данные из файла на SD карты и записать их в массив, вам нужно сначала прочитать строки из файла, затем разбить строки на элементы массива и преобразовать их в числа.

Вам нужно сонсолидировать чтение данных из файла в строку и затем разбить эту строку на числа, используя запятые как разделитель. Пример кода для этого может выглядеть следующим образом:

File myFile = SD.open("datalog.txt");
if (myFile) {
String data = "";
while (myFile.available()) {
char c = myFile.read();
if (c == '\n') {
// разделитель строки, обработка
int values[10]; // установите максимальное количество значений
int index = 0;
char* ptr = strtok(data.c_str(), ",");
while (ptr != NULL) {
values[index] = atoi(ptr);
index++;
ptr = strtok(NULL, ",");
}
// теперь у вас есть массив значений в values[], можно его использовать
data = "";
} else {
// добавляем символ в строку
data += c;
}
}
myFile.close();
}

Этот код будет считывать данные из файла строки за строкой, а затем разбивать каждую строку на отдельные элементы и преобразовывать их в числа. В результате у вас будет заполненный массив values, содержащий числа из файла.

Учитывайте, что данный пример предполагает, что каждая строка в файле содержит данные в формате "число, число, число, ...". Если у вас есть другой формат данных, вам может потребоваться изменить код в соответствии с вашими требованиями.

20 Апр 2024 в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир