0

次のコードを使用して、SPIFFS を使用して Config.json ファイルを ESP32 フラッシュ メモリに保存しています。

#include <ArduinoJson.h>
#include <FS.h>
#include<SPIFFS.h>

bool loadConfig() {
File configFile = SPIFFS.open("/Config.json", "r");
if (!configFile) {
Serial.println("Failed to open config file");
return false;
}


size_t size = configFile.size();
if (size > 1024) {
Serial.println("Config file size is too large");
return false;
}


// Allocate a buffer to store contents of the file.

std::unique_ptr<char[]> buf(new char[size]);

// We don't use String here because ArduinoJson library requires the input
// buffer to be mutable. If you don't use ArduinoJson, you may as well
// use configFile.readString instead.


configFile.readBytes(buf.get(), size);
Serial.println(buf.get());


StaticJsonBuffer<1024> jsonBuffer;
JsonObject& json = jsonBuffer.parseObject(buf.get());


if (!json.success()) {
Serial.println("Failed to parse config file");
return false;
}

const char* ssid = json["ssid"];
const char* password = json["password"];

// Real world application would store these values in some variables for
// later use.


Serial.print("Loaded ssid: ");
Serial.println(ssid);
Serial.print("Loaded password: ");
Serial.println(password);
return true;
}


void setup() {
Serial.begin(115200);
Serial.println("");
delay(1000);
Serial.println("Mounting FS...");
if (!SPIFFS.begin()) {
Serial.println("Failed to mount file system");
return;
}




if (!loadConfig()) {
  
Serial.println("Failed to load config");

} 

else {
Serial.println("Config loaded");
}

}

void loop() {
yield();

}

ただし、解析に失敗し、シリアル モニターに次のメッセージが表示されます: Mounting FS... ⸮xV⸮⸮⸮⸮⸮ Failed to parse config file Failed to load config

  • 私のArduino IDEのバージョン: 1.8.13 (Windows)
  • 構成ファイルには 2 つのオブジェクトがあります。
    {
        "ssid": "ESP32",
        "password": "Softronics"    
      }

前もって感謝します

4

1 に答える 1