Ошибка компиляции при попытке прочитать данные Firebase с помощью esp32 в Arduino IDE
Я пытаюсь прочитать данные firebase с помощью esp32, когда я пытаюсь прочитать данные firebase статически (строковый литерал), ошибка не возникает.
String board=Firebase.getString(fbdo, F("Device/board")) ? String(fbdo.to()).c_str() : fbdo.errorReason().c_str(); // успешное получение данных
Но когда я пытаюсь прочитать данные динамически, используя объект String, я получаю ошибку компиляции для данного кода
String string2 = "Device/board";
String board1=Firebase.get(fbdo, F(string2)) ? String(fbdo.to()).c_str() :
fbdo.errorReason().c_str();
ERROR : #define F(string_literal) (FPSTR(PSTR(string_literal)))
Как решить эту проблему?
@Ramesh Kumar, 👍-1
Обсуждение1 ответ
Макрос F()
можно использовать только со строковыми литералами, но не с переменными.
Простым решением должно быть (я не могу протестировать) предоставление string2
напрямую. (Я надеюсь, что Firebase.get()
перегружен.) Попробуйте следующее:
String board1 = Firebase.get(fbdo, string2) ? String(fbdo.to()).c_str() : fbdo.errorReason().c_str();
Чтобы сэкономить драгоценную оперативную память, вы можете использовать другой тип данных для string2
. Чтобы получить аналогичный результат, вы можете попробовать:
const __FlashStringHelper *string2 = F("Device/board");
String board1 = Firebase.get(fbdo, string2) ? String(fbdo.to()).c_str() : fbdo.errorReason().c_str();
Чтобы получить больше информации, вы можете прочитать это руководство по PROGMEM.
Спасибо бро, проверю и сообщу результат, @Ramesh Kumar
- Чтение данных из Google Таблиц с помощью Nodemcu
- I2C связь между Arduino Uno и Nodemcu32-s (ESP32)
- Распознавание голоса Arduino
- PN532 не обнаруживает RFID-карту при подключении к ESP32 в режиме I2C, но отлично работает с Arduino Uno
- ESP32-Cam не отвечает и не может запрограммировать — истекло время ожидания заголовка пакета
- Связь Arduino Uno и ESP32 с использованием RS485
- Uno - ESP32 SoftwareSerial связь не работает
- Arduino uno R4 против платы разработчика ESP32
добавьте к вопросу точное сообщение об ошибке, которое вы получаете, @Juraj
не используйте макрос F на esp32, @Juraj