0

我的代码输出中有一些我不明白的东西。我的猜测是问题是由于[当然是我]......使用“struct”+“arduinoJson”来存储配置值。

我制作了这个只连接到 Wifi 的简单代码;

  • 要么使用硬编码设置

    loadConfigHarcoded(); // 值的串行打印:OK和“WiFi 成功!”

  • 要么使用反序列化Json

    loadConfigFromJson(); // 值的串行打印:好的,但是“WiFi 连接失败!”

有什么我错过的吗?

完整代码:

#include <ESP8266WiFi.h>
#include <ArduinoJson.h>

const char* ssid = "my_ssid";
const char* password = "my_password";
String confJson = "{\"ssid\": \""+String(ssid)+"\", \"password\": \""+String(password)+"\"}";

struct sConfig {
  const char* ssid;
  const char* password;
  const char* host;
};
sConfig config;

void loadConfigHarcoded() {
  config.ssid = ssid;
  config.password = password;
}
void loadConfigFromJson() {
  DynamicJsonDocument docConfig(1024);
  DeserializationError err = deserializeJson(docConfig, confJson);
  if (!err) {
    config.ssid     = docConfig["ssid"];
    config.password = docConfig["password"];
  }
}

void setup() {
  Serial.begin(115200);
  Serial.println();
  
  loadConfigHarcoded(); // Serial print of values are OK ; and "WiFi Success!"
  //loadConfigFromJson(); // Serial print of values are OK ; but "WiFi Connect Failed!"
    
  Serial.print("SSID=");
    Serial.println(config.ssid);
  Serial.print("PSWD=");
    Serial.println(config.password);
  
  WiFi.mode(WIFI_STA);
  WiFi.begin(config.ssid, config.password);
  if (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("WiFi Connect Failed!");
  } else {
    Serial.println("WiFi Success!");
  }
}

void loop() {
  
}
4

0 回答 0