Могу ли я перейти от сбоя подключения к сканированию ssid без выключения и повторного включения Wi-Fi между ними?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Могу ли я перейти от сбоя подключения к сканированию ssid без выключения и повторного включения Wi-Fi между ними?

Сообщение Anonymous »

Моя цель — включить мой микроконтроллер (esp32-devkit-v1) и повторно подключить его к последнему Wi-Fi, к которому он был подключен до выключения.
Если этот SSID находится вне диапазона, отсканируйте найти новые и перечислить их, чтобы я мог выбрать новый для подключения.
Проблема
После сбоя соединения сканирование никогда не выполняется. сработало.

Насколько я могу судить, WiFi.scanNetworks() никогда не устанавливает статус в -1, и сканирование никогда не инициируется (также он устанавливает uint8_t n; в значение 254).

Если я хочу, чтобы все работало как задумано, мне нужно выключить и снова включить Wi-Fi перед сканированием.
По порядку чтобы я не заполнял этот запрос ненужными вещами, которые не имеют никакого отношения с моим вопросом я сократил свой код до следующего:
#include
#include

const char* ssid = "blehbleh";
const char* password = "blahblah";
uint8_t n;

bool connectingToLast() {
Serial.printf("Trying to connect to %s\n", ssid);
WiFi.begin(ssid, password);
int8_t status = WiFi.waitForConnectResult(20000);
if (status != WL_CONNECTED)
{
Serial.printf("Not connected! Err: %i\n", status);
return false;
} else return true;
}

void wifiScan() {
Serial.print("Scanning networks.");
WiFi.scanNetworks(true);
while (WiFi.scanComplete() == -1)
{
delay(500);
Serial.print(".");
}
Serial.println("");
delay(1000);

n = WiFi.scanComplete();
Serial.printf("Amount of networks found: %d\n", n);
for (uint8_t i = 0; i < n; i++)
{
Serial.printf("%2d. %s\n", i+1, WiFi.SSID(i));
}
Serial.println("");
}

void setup() {
Serial.begin(115200);

WiFi.mode(WIFI_STA);
if (connectingToLast())
{
Serial.println("Connected!");
}
else
{
WiFi.mode(WIFI_OFF); // IS IT POSSIBLE TO NOT
WiFi.mode(WIFI_STA); // NEED THESE TWO LINES?
wifiScan();
}
}

void loop () {}


Подробнее здесь: https://stackoverflow.com/questions/792 ... ng-the-wif
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»