Проблема с чтением MIFARE 13,5 МГц с помощью библиотеки MFRC522.
Я пытаюсь прочитать UID карт MIFARE 13,5 МГц с помощью библиотеки MFRC522 и определил для нее следующую функцию.
void getUID() {
if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) {
Serial.println("Scanned PICC's UID:");
tag = "";
for (byte i = 0; i < mfrc522.uid.size; i++)
{
tag.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
tag.concat(String(mfrc522.uid.uidByte[i], HEX));
}
tag.toUpperCase();
Serial.println(tag);
mfrc522.PICC_HaltA(); // Остановить чтение
}
}
Эта функция прекрасно работает в void цикле(), но когда я вызываю ее в следующем веб-запросе, мой esp8266 аварийно завершает работу.
controlserver.on("/searchuid", HTTP_POST, [](AsyncWebServerRequest *request){
transmit = request->arg("idcode");
if (request->hasArg("configmodule")) {
File file = SPIFFS.open("/inputString.txt", "r");
if (!file) {
Serial.println("Failed to open file");
return;
}
getID();
delay(500);
Serial.println(tag);
String content = file.readString();
if (content.indexOf(tag) >= 0) {
Serial.println("Found search string");
} else {
Serial.println("Did not find search string");
}
}
});
и я не могу понять почему, любая помощь будет оценена по достоинству.
@M A K, 👍1
1 ответ
Лучший ответ:
▲ 1
В разделе "Важные вещи, которые следует запомнить" в README ESPAsyncWebServer:
Вы не можете использовать выход, задержку или любую функцию, которая их использует внутри. обратные вызовы
Ваш код вызывает delay()
в обратном вызове и вызывает функции, о которых вы не знаете, не вызывайте delay()
или yield()
.
Вам необходимо переписать код, чтобы следовать инструкциям в документации веб-сервера.
,
@romkey
Смотрите также:
- Несколько клиентских серверов через Wi-Fi
- Как получить параметры запроса от ESPAsyncWebServer?
- контент» не захватывается
- Как разрешить междоменные запросы на ESP8266 WebServer
- Почему мы используем client.flush() в коде, когда мы подключаем Esp8266 к Интернету или серверу?
- Создание веб-сервера на Wemos D1 mini pro
- Управление реле 5В с помощью Wemos D1 R1
- ESP8266 отправляет веб-страницу клиенту, но html-коды отображаются в браузере вместо веб-страницы