Witam wszystkich!
Niechętnie korzystam z forum bo jestem zdania, że wszystkiego o nauczę się sam to zostanie mi na zawsze.. ale mnie przycisło
Ponieważ mam ciągły problem z pętlami muszę poprosić was o pomoc.
Mam taki kod:
Kod:
void read_rfid(){
int i=0;
for (i=0; i<8; i++){
odczyt[i] = EEPROM.read(i);
}
}
I teraz chciałbym odczytać następne 8 miejsc w pamięci i następne 8 i następne aż i osiągnie 255.
Jak to zrobić? Wiem, że muszę mieć pętlę nadrzędną ale po 1000 kombinacji powoli się poddaję..
Robisz dokładnie to co napisałeś w temacie, wstawiasz pętlę jedną w drugą, tą którą pokazałeś chcesz wykonać 32 razy:
Kod:
void read_rfid()
{
for (int j=0;j<32;j++)
{
for (int i=0; i<8; i++)
{
//tylko tu uwzglednij przesuniecie o j x 8
odczyt[(j*8)+ i] = EEPROM.read((j*8)+ i);
}
}
}
Dzięki bardzo! Zadziałało
Nie mogłem załapać jak mam wstawić to przesunięcie. Masz u mnie piwo
Mam jeszcze jeden problem. Odczytuję kody rfid (string) z pamięci eeprom jeden po drugim ale w jednym ciągu bez spacji i znaku końca linii. Gdzie wstawić /n żeby każdy kod pojawił się w osobnym wierszu na stronie?
Obstawiam, że gdzieś w okolicach:
Ale coś mi nie idzie..
Jeżeli potraktować pojedynczy bit jako literę, a 8 bitów jako słowo, to pętla:
Kod:
for (int i=0; i<8; i++)
składa z liter poszczególne słowa, a pętla:
Kod:
for (int j=0;j<32;j++)
składa z 32 słów tablicę.
Można z tego wywnioskować, że znak końca linii lub jakikolwiek inny wybrany, dzielący poszczególne odczyty, należy w programie umieścić wewnątrz drugiej pętli, po wykonaniu się pierwszej.
No właśnie próbuję i coś nie trybi..
\n nie działa, client.print("<br>"); nie działa..
Nie wiem co zastosować żeby podzielić te ciągi i ułożyć w wiersze.
No jak drukujesz z tej pętli na serial to na końcu pętli z for j wstawiasz println, a jak sobie to zapisujesz do tablicy char to na indeksie 8 tablicy 9-elementowej.
Czyli tak?
Kod:
odczyt[(j*8)'\n'+ i]
odczyt[(j*8)+ i'\n']
Próbowałem na różne sposoby ale nie działa.
Masz blok, który wykonuje się osiem razy, program leci linia po linii, czyli po tym bloku wstawiasz, wewątrz iteracji od j, a poza iteracją i:
Kod:
void read_rfid()
{
for (int j=0;j<32;j++)
{
for (int i=0; i<8; i++)
{
//tylko tu uwzglednij przesuniecie o j x 8
odczyt[(j*8)+ i] = EEPROM.read((j*8)+ i);
}
//!!!TUTAJ!!!
}
}
Problem w tym że obojętnie w którym miejscu wstawię jakikolwiek znak końca linii, niestety nie dzieli ciągu na wiersze.
Jakim poleceniem wysyłasz dane i co je odbiera?