您好我使用esp8266模块http客户端示例,我的代码与示例代码完全一样。
这是我的代码的一部分:
if (httpCode > 0) {
if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
String payload = http.getString();
if(payload=="text") {
digitalWrite(LED_BUILTIN, HIGH);
} else {
digitalWrite(LED_BUILTIN, LOW);
}
}
}
我无法将我的变量与我的文本进行比较,并且LED_BUILTIN
始终打开。我相信它可以获取http客户端页面的文本,因为我可以使用softwareserial
将其发送到Arduino nano。
实际上,当我想将它发送到arduino nano时,它给了我一个错误:没有匹配函数来调用HardwareSerial::write(String&)
我可以使用此示例代码修复错误
String mystring= http.getString();
char* buf = (char*) malloc(sizeof(char)*myString.length()+1);
myString.toCharArray(buf, myString.length()+1);
Serial.write(buf);
free(buf);
但是esp8266模块无法将有效负载与我的文本进行比较
如果LED打开,那么比较方法肯定是有效的。尝试从服务器发送不同的字符串,您的LED应该关闭。而且,当您遇到这样的问题时,请尝试将“有效负载”打印到串行监视器。至少,你可以弄清楚故障的位置。
希望这个帮助。