Stap 7: Code uitleg - vervolg
boolean echoFind(String keyword){ byte current_char = 0; byte keyword_length = keyword.length(); long deadline = millis() + TIMEOUT; while(millis() < deadline){ if (mySerial.available()){ char ch = mySerial.read(); Serial.write(ch); if (ch == keyword[current_char]) if (++current_char == keyword_length){ Serial.println(); return true; } } } return false; // Timed out }
De laatste functie wordt gebruikt voor het vergelijken van de tekenreeks acknowledge aan het antwoord gegeven door de ESP-01 zodra een opdracht is verstuurd.
Eerst initialiseren we de variabele "current_char" tot nul. Deze variabele zal dienen als een index te vergelijken van elk teken tussen de acknowledge string en de ESP-reactie. Vervolgens we de lengte van de tekenreeks acknowledge worden opgeslagen in de variabele "keyword_length" en maak een termijn die gelijk is aan de tijd sinds de Arduino board lopen plus 5000ms.
Vervolgens maken we een tijdje lus die loopt tot de deadline is gehaald. Binnen de while lus die we controleren of er gegevens moeten worden gelezen in de seriële kanaal verbonden met de ESP. Als het geval klopt, vervolgens vergelijken wij de acknowledge tekenreeks aan die de gegevens onleesbaar maken van de seriële kanaal.
Als beide gelijk zijn, retourneert de functie een echte om te vertellen dat de ESP-01 heeft gereageerd dienovereenkomstig aan de opdracht is verzonden. Als de termijn is voldaan, geeft de functie als resultaat een valse, wat betekent dat iets mis gegaan en de ESP was niet in staat om te reageren op de opdracht die is verzonden.