• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
jednak nie SOLVED Dodanie do tablicy bez powtórzeń, kto zalogowany do ESP8266
#1
Cześć

może orientujecie się jak w Arduino w języku C? zrobić takie coś: 

ogólnie chodzi o listę zalogowanych płytek ESP8266 do Servera Smile


Odczytujemy z Serial.print jakiegoś Stringa powiedzmy "Ala ma kota" i dodajemy tego Stringa do tablicyX.
następnie ponownie
Odczytujemy z Serial.print jakiegoś Stringa powiedzmy "Basia i Kasia" i dodajemy tego Stringa do tablicyX.
następnie ponownie
Odczytujemy z Serial.print jakiegoś Stringa PONOWNIE "Ala ma kota" i kod ma sprawdzić czy taki String jest już w tablicy. Jak jest to nie dodajemy, jak nie ma to dodajemy do tablicy.

W Javie podobno można zrobić to poprzez jakiś Set obiekt. a bliżej chyba  HashSet, TreeSet i LinkedHashSet , Ale w Arduino ?Smile


Pzdr
 
Odpowiedź
#2
Praktycznie rozwiązanie : aktualnie zalogowani WiFi ESP8266 
https://stackoverflow.com/questions/4259...th-esp8266

powyższe działąło ale przestało Smile

Muszę to zrobić innym sposobem:

Stworzyć tablicę dynamiczną i gdy ESP8266 sie podłączy wysyła swoją nazwę np client1. Server to odczytuje i dodaje do tablicy. 
Elementy w tablicy nie mogą się dublować.

1. Istnieje coś takiego jak Vector - nic z tego nie kumam jeszcze
2. Istnieje coś takiego jak znaczniki ale to chyba nie działa

Kod:
int maxUzytkownikow = 10;
String * tab = new String[maxUzytkownikow];

void setup(){
 Serial.begin(115200);

 while (!Serial){
   //czekaj na połączenie portu
 }
 tab[0] = "Tomek";
 tab[1] = "Kasia";
 tab[2] = "Zosia";
 tab[3] = "Ola";  
}

void loop(){

// jeśli poniżej w pkt. 2. zamiast sizeof() wpiszę ilość elementów w tablicy = 4 wtedy ładnie
// random działa i wyświetla imiona. Czyli sizeof() nie działa jak powinno
   
  1.   Serial.print("Element tablicy: ");
  2.   Serial.println(tab[random(0,sizeof(tab))]); // losowanie jednego elementu z tablicy
  3.   Serial.print("Rozmiar Tablicy: ");
  4.   Serial.println(sizeof(tab)); // pokazuje tylko cyfrę 2 zamias 4 ( tyle elementów w tab[])
  5.   delay(1000);
 
}
Serial Monitor wypluwa : ( tylko Kasia I Tomek . Rozmiar Tablicy 2 ) wszystko nie tak jak powinno być czyli:
Losowo za każdym razem, random z Tomek Kasia Zosia Ola
Kod:
Element tablicy: Kasia
Rozmiar Tablicy: 2
Element tablicy: Kasia
Rozmiar Tablicy: 2
Element tablicy: Kasia
Rozmiar Tablicy: 2
Element tablicy: Tomek
Rozmiar Tablicy: 2
Element tablicy: Tomek
Rozmiar Tablicy: 2
Element tablicy: Tomek
Rozmiar Tablicy: 2
Element tablicy: Tomek
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości