I am communicating with the esp8266 WiFi module using Arduino. The module returns GET requests from other clients. They will be of the form
GET /101011 HTTP/1.1\r\nHost...
I wish to extract only the 101011
from the received serial data and discard the rest. I came up with this small chunk of code to test it by sending data from my laptop.
This is the code:
String s;
void setup() {
Serial.begin(9600);
}
void loop() {
if(Serial.available())
{
Serial.println("Inside");
Serial.find("/");
s = Serial.readStringUntil(' ');
Serial.println(s);
// Discard the rest of the data . Snippet from Jeremy Blum's Blog
while(Serial.available()>0) Serial.read();
}
}
But when I run this using the input GET /101011 HTTP/1.1\r\n
the output produced is
Inside
101011
Inside
1.1\r\n
Why is Serial.available()
returning true
even after reading everything? How to discard the rest of data from the serial input buffer?