• 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
Serial.find() or Serial.find()???
#1
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?
 
Odpowiedź
#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
 
Odpowiedź
#3
Witam,
Przede wszystkim ((... and....) or (...and...))
Pozdrawiam.
 
Odpowiedź
#4
wydaje mi się że przy operacjach na bitach
musisz zamiast and napisać &
to nad literą 7
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości