Arduino Polska Forum

Pełna wersja: Serial.find() or Serial.find()???
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam, programuję centralkę alarmową sterowaną za pomocą smsów, udało mi się zrobić aby program reagował na jeden numer telefonu ale nie wiem jak dodać kolejny. Przedstawię to na prostym przykładzie:


void setup() {
  Serial.begin(9600);  // set serial port at desired value
  Serial.println("serial find test"); // echo test
}

void loop() {
  while (Serial.available()) 
  {
    if (Serial.find("kolega") and Serial.find("2") or Serial.find("kot") and Serial.find("2"))
    {
      Serial.println("Found!");
    }
    }
  } 


próbowałem też tak:


void setup() {
  Serial.begin(9600);  // set serial port at desired value
  Serial.println("serial find test"); // echo test
}

void loop() {
  while (Serial.available()) 
  {
    if (Serial.find("kolega") and Serial.find("2"))
    {
      Serial.println("Found!");
    }
    else 
    { 
      if (Serial.find("kot") and Serial.find("2"))
      {
       Serial.println("Found"); 
      }
    }
  }
}
 
Found jest zwracane tylko po wpisaniu kolega 2, jak zrobić aby reagował także na kota 2?
Nie używałem "Serial.find" ale wydaje mi się że przy przeszukiwaniu od razu czyści bufor
czyli po pętli:
if (Serial.find("kolega") and Serial.find("2")) { }
następna pętla nie zadziała, bo bufor seriala będzie pusty.

Możesz sprawdzić czy mam rację, dając w 1 pętlę kota a w 2 kolegę ( wtedy powinno reagować tylko na kota).

Jeżeli mam rację to proponuję dane z seriala przypisać do zmiennej String i sprawdzać tą zmienną.
Pozdrawiam
Witam,
Przede wszystkim ((... and....) or (...and...))
Pozdrawiam.
wydaje mi się że przy operacjach na bitach
musisz zamiast and napisać &
to nad literą 7