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
303 +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 Апр в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 548 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир