A következőt szerettem volna megvalósítani, de félúton elakadtam. Adott egy USER.txt az SD kártyán, ahol minden sor egy felhasználó adatát tartalmazza sima vesszővel elválasztva. Jelen esetben a token azonosítószámát, illetve a nevét. Ezt soronként beolvasom, a veszőnél kettészedem, és letárolom egy char* tipusú tömbben. A gondom az, hogy a setup() részben lefut minden látszólag hiba nélkül, mégsem tudom elérni utána a változó értékét. Példának okáért felhasznalok[3] az én értelmezésemben - és a setup() részben vissza is adja - a tömb 4. elemét kellene, hogy adja. De nem adja, valahol talál valamit a memóriában, de értelmezhetetlen. Hol tolhattam el, és mit szerintetek?
Kód: Egész kijelölése
#include <SD.h>
//--------------------------- SD kártya változói --------------------------- //
File myFile; // a file neve
char c; // beolvasott byteok
//--------------------------- SD Kártya változói --------------------------- //
//--------------------------- SD Split változói --------------------------- //
String adat; // itt tároljuk az egyes sorokat amiket beolvasunk
int vesszoPozi; // a vessző helye a szövegben
//--------------------------- SD Split változói --------------------------- //
//--------------------------- Adatok változói --------------------------- //
char* felhasznalok[18]; //25 elemből áll maximum a tömb
char* felhasznalok_neve[18]; //25 elemből áll maximum a tömb
int i=0;
String stringOne;
String stringTwo;
//--------------------------- Adatok változói --------------------------- //
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.print("SD kartya inicializalasa...");
if (!SD.begin(4)) {
Serial.println("SD kartya hiba!");
return;
}
Serial.println("SD kartya rendben!");
// re-open the file for reading:
myFile = SD.open("user.txt");
if (myFile) {
Serial.println("USER.txt megnyitva!");
// read from the file until there's nothing else in it:
while (myFile.available()) {
c = myFile.read();
if (c != '\n'){
Serial.print(c);
adat += c;
}
else {
Serial.print(c);
//Serial.println("Sorvege");
do
{
vesszoPozi = adat.indexOf(',');
Serial.println(i);
if(vesszoPozi != -1)
{
Serial.println( adat.substring(0,vesszoPozi));
stringOne = adat.substring(0,vesszoPozi);
char charBuf[stringOne.length()+1];
stringOne.toCharArray(charBuf, stringOne.length()+1);
felhasznalok[i] = charBuf;
Serial.print("Charbuf: ");
Serial.println(charBuf);
Serial.print("Felhasznalo adatbazis: ");
Serial.println(felhasznalok[i]);
adat = adat.substring(vesszoPozi+1, adat.length());
}
else
{ // ha van még valami az utolsó vessző után
if(adat.length() > 0){
stringTwo = adat;
if (stringTwo == "Kugler Janos") {
Serial.println("--------------Nyert!----------");
}
char charBuf2[stringTwo.length()+1];
stringTwo.toCharArray(charBuf2, stringTwo.length()+1);
felhasznalok_neve[i] = charBuf2;
Serial.println(adat);
Serial.print("Charbuf2: ");
Serial.println(charBuf2);
Serial.print("Felhasznalo_neve adatbazis: ");
Serial.println(felhasznalok_neve[i]);
}
}
}
while(vesszoPozi >=0);
adat = "";
i++;
}
}
myFile.close(); // bezárjuk a filet
}
else {
// if the file didn't open, print an error:
Serial.println("Nem tudom megynitni a USER.txt fajlt!");
}
}
void loop()
{
Serial.println(felhasznalok[3]);
delay(2000);
}
