Я участвую в проекте, где мне нужно ЧИТАТЬ данные из файла «csv», а затем мне нужно хранить эту информацию в массиве строк для поиска, записи , удалять и добавлять информацию после хранения. Поля, которые я обрабатывать из файла "CSV" являются:Создание массива строк из miscro SD Arduino
ID, имя, количество:
1234 Марио $ 100
3245 Франциско $ 15,50
4356 Jorge $ 0,00
4321 Пабло $ 0,00
2346 Rene $ 0,00
8795 София $ 233,20
3569 Sandra $ 0,00
8907 Andrea $ 0,00
6890 Мару $ 0,00
4563 Ana $ 0,00
6789 Noemi $ 23,12
FINAL
проблем заключается в том, когда я создать массив строк, всегда пишут в современных клетках, что точки индекса (что правильно), но перезаписать тоже предыдущие клетки (что не является правильным), например:
шаг 0:
cell0: 1234 Марио $ 100
step1:
cell0: 3245 Francisco $ 15,50
cell1: 3245 F rancisco $ 15,50
step3:
cell0: 4356 Jorge $ 0,00
cell1: 4356 Jorge $ 0,00
CELL2: 4356 Jorge $ 0,00
и так далее ...
Как вы можете сделать вывод, в конце концов, У меня есть все ячейки Array of Strings с последней информацией, 6789 Noemi $ 23.12, а не с правильной информацией. Код:
#include <SD.h>
//Ajustes SPI
//MOSI, MISO, SCLK estan predeterminados
int CS_pin=8;
char in_char=0;
String datosSD="";
int x=0;
char myStrings[60];
char* arrayStrings[13];
void setup()
{
Serial.begin(9600); //Se inicializa velocidad de comunicación serial
Serial.println("Inicializando microSD");
pinMode(CS_pin,OUTPUT); //Se configura Pin CS (8) como salida
//Se verifica si la tarjeta esta lista
if(!SD.begin(CS_pin))
{
Serial.println("Fallo microSD");
return;
}
Serial.println("miscroSD lista");
//Se abre un archivo para escribir en el
//Solo un archivo se puede abrir a la vez
File datoArchivo=SD.open("TEST.csv");
in_char=datoArchivo.read();
//Se verifica si la apertura del archivo tuvo éxito para poder escribir en el archivo
if(datoArchivo)
{
while(datoArchivo.available())
{
if(in_char!='\n')
{
datosSD.concat(in_char);
in_char = datoArchivo.read();
}
else
{
Serial.println(datosSD);
datosSD.toCharArray(myStrings, 60);
arrayStrings[x]=myStrings;
x++;
in_char = datoArchivo.read();
datosSD="";
}
}
datoArchivo.close();
}
else
{
Serial.println("No se pudo Accesar al Archivo");
}
/////////// Show the information of Array of Strings /////////////////
for (int i = 0; i < 13; i++)
{
Serial.println(arrayStrings[i]);
delay(100);
}
//////////////////////////////////////////////////////////////////////
}
void loop()
{
}
Спасибо заранее
Теперь я понимаю, что происходит с кодом, индекс «x» изменяется, но строка всегда одна и та же, поэтому каждый указатель указывает на тот же адрес в конце. Вы правы, что я пытаюсь сделать, это какая-то база данных, но мне нужно изменить свою стратегию. Я планирую знать положение каждой информации в файле «csv», чтобы записывать/перезаписывать/удалять информацию, когда я нахожу данные и не храню всю информацию в ОЗУ, можете ли вы дать мне несколько подсказок для выполнения этой операции? , проблема заключается в том, как узнать положение точных данных в файле «csv». Заранее благодарю @ jdr5ca. – Mario