Witam, mam problem z odczytem danych z karty SD do tablicy typu char
dopisałem do programu odczyt z drugiego pliku do tablicy zmiennej char, aczkolwiek odczytuje tylko pierwszy znak. co robię nie tak, aby odczytywało całość linijkę do komórki tablicy?
{PS. tablica char dlatego, bo pierwsza tablica String ma 47 komórek a druga też by miała 49 komórek, co skutkuje zajęciem pamięci ram w 65% i źle odczytuje dane [Arduino Leonardo pro mini 2kb ram] na ATmega 644p 4kb ram działa prawidłowo przy dwóch tablicach String}
Plik key.txt:
Plik ir.txt:
Kod programu:
Sieral terminal:
Pomożecie?
Już wiem w czym problem, tablica char ir[x] nie przyjmuje wartości zmiennej bufor. Tylko czemu tak jest?
dopisałem do programu odczyt z drugiego pliku do tablicy zmiennej char, aczkolwiek odczytuje tylko pierwszy znak. co robię nie tak, aby odczytywało całość linijkę do komórki tablicy?
{PS. tablica char dlatego, bo pierwsza tablica String ma 47 komórek a druga też by miała 49 komórek, co skutkuje zajęciem pamięci ram w 65% i źle odczytuje dane [Arduino Leonardo pro mini 2kb ram] na ATmega 644p 4kb ram działa prawidłowo przy dwóch tablicach String}
Plik key.txt:
Kod:
KEY_M
KEY_SSTOP
KEY_TAB
KEY_1
KEY_2
KEY_3
KEY_4
KEY_5
KEY_6
KEY_7
KEY_8
KEY_9
KEY_0
KEY_DEL
MOD_CONTROL_LEFT
KEY_W
KEY_L
KEY_H
KEY_O
KEY_BACKSPACE
KEY_J
KEY_LEFT
KEY_RIGHT
KEY_UP
KEY_DOWN
KEY_I
KEY_SSTOP
KEY_PAGEUP
KEY_PAGEDOWN
KEY_PLAY
KEY_PAUSE
MOD_CONTROL_LEFT
KEY_T
KEY_R
KEY_F
KEY_S
KEY_REVERSE
KEY_FORWARD
KEY_N
KEY_E
KEY_ESC
KEY_BACKSLASH
KEY_A
KEY_T
KEY_Z
KEY_ENTER
KEY_HOME
KEY_C
KEY_U
Plik ir.txt:
Kod:
550720173
550707933
550750263
550760463
550744653
550732413
550748223
550716093
550740573
550756383
550724253
550742613
550758423
550726293
550754343
550738533
550722213
550763013
550729863
550714053
550746183
550756893
550740063
550748733
550731903
550723743
550719663
550752813
550712013
550728333
550718133
550701813
550709973
550734453
550727823
550744143
550750773
550717623
550733943
550760973
550758933
550742103
550725783
550721703
550705893
550738023
550715583
550735983
550703853
550754853
Kod programu:
Kod:
#include <SPI.h>
#include <SD.h>
boolean stringComplete = false;
const int rozmiar_key = 47;
const int rozmiar_ir = 49;
String key[rozmiar_key];
char ir[rozmiar_ir];
char bufor = "";
int i = 0;
int a = 0;
File myFile;
File irFile;
void setup() {
Serial.begin(9600);
while (!Serial) {}
Serial.print("Inicjowanie karty SD...");
Serial.print("\n");
if (!SD.begin(8)) {
Serial.println("Inicjalizacja nieudana!");
return;
}
Serial.println("inicjalizacja zakonczona pomyslnie");
Serial.println("Otwieram plik: 'key.txt'");
myFile = SD.open("key.txt", FILE_READ);
if (myFile) {
while (myFile.available())
{
key[i] = myFile.readStringUntil('\n');
//Serial.println(key[i]);
i++;
}
myFile.close();
Serial.println("Zamykam plik: 'key.txt'");
} else {
Serial.println("Blad otwarcia pliku key.txt");
}
// wyjscie na serial
for (int d = 0; d < 48; d++) {
Serial.print(d);
Serial.print(" = ");
Serial.println(key[d]);
}
Serial.println("Otwieram plik: 'ir.txt'");
irFile = SD.open("ir.txt", FILE_READ);
i=0;
if (irFile) {
while (irFile.available())
{
bufor = irFile.read();
Serial.print(bufor);
ir[i] += bufor;
if (bufor == '\n') stringComplete = true;
if (stringComplete) {
Serial.print(ir[i]);
//Serial.print(bufor);
bufor = "";
i++;
stringComplete = false;
}
}
irFile.close();
Serial.println("zamykam plik: 'ir.txt'");
} else {
Serial.println("Blad otwarcia pliku ir.txt");
}
// wyjscie na serial
for (int x = 0; x < i; x++) {
Serial.print(x);
Serial.print(" = ");
Serial.println(ir[x]);
}
}
void loop() {
}
Sieral terminal:
Kod:
Inicjowanie karty SD...
inicjalizacja zakonczona pomyslnie
Otwieram plik: 'key.txt'
Zamykam plik: 'key.txt'
0 = KEY_M
1 = KEY_SSTOP
2 = KEY_TAB
3 = KEY_1
4 = KEY_2
5 = KEY_3
6 = KEY_4
7 = KEY_5
8 = KEY_6
9 = KEY_7
10 = KEY_8
11 = KEY_9
12 = KEY_0
13 = KEY_DEL
14 = MOD_CONTROL_LEFT
15 = KEY_W
16 = KEY_L
17 = KEY_H
18 = KEY_O
19 = KEY_BACKSPACE
20 = KEY_J
21 = KEY_LEFT
22 = KEY_RIGHT
23 = KEY_UP
24 = KEY_DOWN
25 = KEY_I
26 = KEY_SSTOP
27 = KEY_PAGEUP
28 = KEY_PAGEDOWN
29 = KEY_PLAY
30 = KEY_PAUSE
31 = MOD_CONTROL_LEFT
32 = KEY_T
33 = KEY_R
34 = KEY_F
35 = KEY_S
36 = KEY_REVERSE
37 = KEY_FORWARD
38 = KEY_N
39 = KEY_E
40 = KEY_ESC
41 = KEY_BACKSLASH
42 = KEY_A
43 = KEY_T
44 = KEY_Z
45 = KEY_ENTER
46 = KEY_HOME
47 = KEY_C
Otwieram plik: 'ir.txt'
(Zmienna bufor)
550720173
⸮550707933
⸮550750263
⸮550760463
⸮550744653
⸮550732413
⸮550748223
⸮550716093
⸮550740573
⸮550756383
⸮550724253
⸮550742613
⸮550758423
⸮550726293
⸮550754343
⸮550738533
⸮550722213
⸮550763013
⸮550729863
⸮550714053
⸮550746183
⸮550756893
⸮550740063
⸮550748733
⸮550731903
⸮550723743
⸮550719663
⸮550752813
⸮550712013
⸮550728333
⸮550718133
⸮550701813
⸮550709973
⸮550734453
⸮550727823
⸮550744143
⸮550750773
⸮550717623
⸮550733943
⸮550760973
⸮550758933
⸮550742103
⸮550725783
⸮550721703
⸮550705893
⸮550738023
⸮550715583
⸮550735983
⸮550703853
⸮550754853zamykam plik: 'ir.txt'
Zmienna ir)
0 = ⸮
1 = ⸮
2 = ⸮
3 = ⸮
4 = ⸮
5 = ⸮
6 = ⸮
7 = ⸮
8 = ⸮
9 = ⸮
10 = ⸮
11 = ⸮
12 = ⸮
13 = ⸮
14 = ⸮
15 = ⸮
16 = ⸮
17 = ⸮
18 = ⸮
19 = ⸮
20 = ⸮
21 = ⸮
22 = ⸮
23 = ⸮
24 = ⸮
25 = ⸮
26 = ⸮
27 = ⸮
28 = ⸮
29 = ⸮
30 = ⸮
31 = ⸮
32 = ⸮
33 = ⸮
34 = ⸮
35 = ⸮
36 = ⸮
37 = ⸮
38 = ⸮
39 = ⸮
40 = ⸮
41 = ⸮
42 = ⸮
43 = ⸮
44 = ⸮
45 = ⸮
46 = ⸮
47 = ⸮
48 = ⸮
49 = f
50 =
Pomożecie?
Już wiem w czym problem, tablica char ir[x] nie przyjmuje wartości zmiennej bufor. Tylko czemu tak jest?