我想从esp32在我的Web服务器上发送数据。 ESP32无法进入网站并重启。
我使用了Arduino IDE的实例。 我试图发布(htt.POST(“ X”))一些东西,并得到相同的错误。 我标记了代码以查找导致问题的行。 谷歌搜索。
...
msg="192.168.4.22/parametr";
if(WiFi.status() == WL_CONNECTED){
if(client.connect(host,httpPort)){
http.begin(msg);
Serial.print("0");
Serial.print("[HTTP] GET...\n");
int httpCode = http.GET();
Serial.print("1");
...
我希望进入网站,但现在esp32在实现http.GET()时会重新启动,并且从不打印“ 1”。 错误消息:Guru Meditation错误:核心1出现紧急情况(LoadProhibited)。未处理异常。
答案 0 :(得分:0)
您传递给http.begin()
的URL不正确。您需要包括http://
前缀(请参见here)。从语义上讲,命名此变量url
而不是msg
更有意义。
还...检查http.begin()
的返回值-以防仍然失败。
const char *url = "http://192.168.4.22/parametr";
// Check Wi-Fi connected, etc.
if (!http.begin(url)) {
Serial.println("HTTP client failed to connect ...");
}
else {
int httpCode = http.GET();
// etc.
}
LoadProhibited
致命错误表示尝试读取或写入无效的内存位置。当库无法解析您提供的URL时,HTTPClient
对象的某些成员可能未被初始化。
为协助调试,请尝试将Arduino IDE中的“核心调试级别”设置为“调试”。
Arduino IDE->工具->核心调试级别->调试
这将确保ESP日志消息(例如可能打印if initialization of the HTTP client fails)将在串行端口上打印。
例如,这是日志输出,我看到我是否未能在URL中包含http://
协议说明符(更改核心调试级别之后)。