我正在使用Arduino核心的ESP8266库,并且我写了几行将Esp8266变成运行http服务器的接入点,该服务器从传入的TCP客户端获取请求。然后请求通过串行发送到Raspberry Pi。readStringUntil在Esp8266 Arduino草图中多次触发
一切正常,但Serial.println(req)
行被执行5或6次,这是不好的。这里是我的代码的精简版本,再现奇怪的行为:
#include <ESP8266WiFi.h>
WiFiServer server(80);
void setup() {
Serial.begin(115200);
WiFi.softAP("zouzou3000", "totocaca");
server.begin();
}
void loop() {
WiFiClient client = server.available();
if (!client) {
return;
}
String req = client.readStringUntil('\r');
Serial.println(req);
delay(1);
}
如果我把一个HTTP响应只是它使用client.print("foo_bar_answer")
后,它解决了问题,但我不希望发送答案但由于我必须首先解析请求,请通过串行将其发送到RBPI,等待答案,然后将其发送回客户端。我试图增加延迟或使用布尔值来防止这种行为,但它不起作用。我非常喜欢Arduino编程,欢迎任何帮助!
如果您不知道如何解析HTTP请求,请使用[HTTP服务器库](https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer)。 –
典型的HTTP请求中有几个\ r。从这里,多个打印可能来自下一个循环迭代。 – leetibbett
@gre_gor感谢您的建议。修改HelloServer示例以使其适用于AP模式,我能够正确解析HTTP请求 – Zbam