Ошибка String does not name a type

Я использую Arduino IDE для платы ESP32 WROOM. Я тестирую функцию OTA с помощью библиотеки ESP32httpUpdate. Я использую пример скетча библиотеки с именем httpUpdate.ino. Однако как только я меняю URL-адрес обновления с помощью указателя строки, который объявляю глобально, выдается ошибка компиляции, что String не называет тип. Есть идеи?

/**
 * httpUpdate.ino
 *
 *  Created on: 27.11.2015
 *
 */
String* FIRMWARE_UPDATE_VERSION = "1000";

String* updateURL = "XYZ.php";

#include <Arduino.h>

#include <WiFi.h>

#include <HTTPClient.h>
#include <ESP32httpUpdate.h>

#define USE_SERIAL Serial

void setup() {

    USE_SERIAL.begin(115200);
    // USE_SERIAL.setDebugOutput(true);

    USE_SERIAL.println();
    USE_SERIAL.println();
    USE_SERIAL.println();

    for(uint8_t t = 4; t > 0; t--) {
        USE_SERIAL.printf("[SETUP] WAIT %d...\n", t);
        USE_SERIAL.flush();
        delay(1000);
    }

    WiFi.begin("SSID", "PASSWORD");

}

void loop() {
    // ждем подключения Wi-Fi
    Serial.println("Yolo");
    if((WiFi.status() == WL_CONNECTED)) {

        t_httpUpdate_return ret = ESPhttpUpdate.update(updateURL, FIRMWARE_UPDATE_VERSION);

        switch(ret) {
            case HTTP_UPDATE_FAILED:
                USE_SERIAL.printf("HTTP_UPDATE_FAILD Error (%d): %s", ESPhttpUpdate.getLastError(), ESPhttpUpdate.getLastErrorString().c_str());
                break;

            case HTTP_UPDATE_NO_UPDATES:
                USE_SERIAL.println("HTTP_UPDATE_NO_UPDATES");
                break;

            case HTTP_UPDATE_OK:
                USE_SERIAL.println("HTTP_UPDATE_OK");
                break;
        }
    }
}

, 👍1

Обсуждение

https://docs.google.com/document/d/1G28416DlDBxZEHrLdYylUgBE80ePzbWDJtMKpQ6lJKk/edit?usp=sharing, @peeyush tekriwal

ссылка на код, @peeyush tekriwal

Код, то есть такой короткий, следует скопировать непосредственно в вопрос и правильно отформатировать как код, выделив его и нажав кнопку {} в редакторе. Я сделал это для вас сейчас, но, пожалуйста, напомните об этом для следующего вопроса., @chrisl

Эй, спасибо. Я попытался добавить код в сам вопрос, но это получилось странно, и я не смог четко отформатировать, поэтому дал ссылку., @peeyush tekriwal

что такое String* updateURL = "XYZ.php";? вы назначаете указатель на постоянный массив символов указателю на объект String. Где вы видели что-то подобное? Это должен быть const char* updateURL = "XYZ.php"; или String updateURL = "XYZ.php";, @Juraj

Сначала я начал со String updateURL = "XYZ.php", но возникла та же ошибка. Затем я увидел в библиотеке http, что функция httpUpdate принимает значение указателя, поэтому я попробовал использовать строковый указатель., @peeyush tekriwal


1 ответ


Лучший ответ:

4

String включен в Arduino.h. До #include <Arduino.h> String не определена. Переместите #include <Arduino.h> в начало файла или удалите его. Если вы удалите его, сборщик Arduino добавит его.

,

Спасибо. Это сработало!/, @peeyush tekriwal