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 в массив?
Для того чтобы правильно считать данные из файла на 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, содержащий числа из файла.
Учитывайте, что данный пример предполагает, что каждая строка в файле содержит данные в формате "число, число, число, ...". Если у вас есть другой формат данных, вам может потребоваться изменить код в соответствии с вашими требованиями.
Для того чтобы правильно считать данные из файла на 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, содержащий числа из файла.
Учитывайте, что данный пример предполагает, что каждая строка в файле содержит данные в формате "число, число, число, ...". Если у вас есть другой формат данных, вам может потребоваться изменить код в соответствии с вашими требованиями.