Ошибка последовательного чтения SSID и PASSWORD WiFI-соединения в ESP32

Пытаясь получить SSID и пароль Wi-Fi динамически с монитора последовательного порта и подключиться к WiFi, попробовал приведенную ниже программу, но Wi-Fi всегда находится только в состоянии подключения, он не подключается после получения ввода от монитора последовательного порта.

#include <WiFi.h>

#define BAUDRATE 115200

char ssid[50];
char pass[50];

void setup() {
  Serial.begin(BAUDRATE);
  Serial.println();
  Serial.print("Enter your WiFi credentials.\n");
  Serial.print("SSID: ");
  while (Serial.available() == 0) {
    // ждать
  }
  Serial.readBytesUntil(10, ssid, 50);
  Serial.print(ssid);
Serial.print("donessid");

  Serial.print("PASS: ");
  while (Serial.available() == 0) {
    // ждать
  }
  Serial.readBytesUntil(10, pass, 50);
  Serial.print(pass);
 Serial.print("donepass");


  WiFi.begin(ssid, pass);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print("Connecting....");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}
void loop()
{}

, 👍0

Обсуждение

И какие результаты вы на самом деле получаете на последовательном мониторе?, @Majenko

Привет, Маженко, я получил результат, подобный этому изображению. Смотрите этот скриншот .. https://imgdb.in/gJ6K, @Rangesh. s

Вы действительно должны научиться использовать println(), чтобы вы не получали все в одной строке. Я подозреваю, что ваша проблема в том, что у вас есть окончание строки, установленное на «CR & NL», но вы ищете только «NL» (10), поэтому вы получаете дополнительные 13 символов в своих строках., @Majenko


1 ответ


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

1

Установлено ли для параметра Serial Monitor значение "Both NL и CR"? Измените его на "Новая строка" должно работать.

Что произошло, так это то, что если ваш Serial Monitor имеет настройку «Both NL и CR», когда вы нажимаете Enter, он генерирует \r\n, Serial.readBytesUntil(10 , ssid, 50) обнаружил этот \r в конце массива, когда вы используете его как SSID, это недействительный SSID.

,

Спасибо hcheung .. это сработало., @Rangesh. s

Рад я этой помощи. Будем признательны, если вы примете ответ, нажав на галочку слева от ответа., @hcheung