ESP8266 UDP отправляет сбой через некоторое время [закрыто] ⇐ C++
ESP8266 UDP отправляет сбой через некоторое время [закрыто]
У меня есть простой код c/c++, который отправляет сообщения udp с аналогового входа моего ESP8266-12f через UDP. Проблема в том, что через пару секунд он перестает работать и обрывается соединение Wi-Fi.
#include #include // сетевые настройки #define WIFI_SSID "***" #define WIFI_PASS "***" const char *udpAddress = "192.168.2.174"; const int udpPort = 4210; const int аналогIn = A0; const int sampleSize = 100; // --------- uint8_t образцы [sampleSize]; int sampleIndex = 0; интервал таймераLastSample; WiFiUDP UDP; недействительная настройка() { // установка серийного номера Serial.begin(115200); // даем некоторое время для последовательного соединения задержка(3000); // обратная связь Serial.println("Подключиться к Wi-Fi..."); // подключаемся к Wi-Fi WiFi.begin(WIFI_SSID, WIFI_PASS); // ждем подключения Wi-Fi пока (WiFi.status() != WL_CONNECTED) { задержка(100); Serial.print("."); } Serial.println("Подключено!"); Serial.print("IP: "); Serial.print(WiFi.localIP()); Serial.println(""); } недействительный цикл() { if(WiFi.status() != WL_CONNECTED){ ЕСП.сброс(); } int сейчас = миллис(); если (сейчас — timerLastSample >= 1) { timerLastSample = сейчас; // читаем значение и преобразуем его в 8-битное значение // https://forum.arduino.cc/t/uno-convert- ... d/361220/2 образцы [sampleIndex] = AnalogRead (аналоговый вход) / 4; // только для разработки Serial.print("Образец собран: "); Serial.print(sampleIndex); Serial.print(" = "); Serial.println(образцы[sampleIndex]); образециндекс += 1; } если (sampleIndex == sampleSize) { Serial.println("Отправить пакет udp!"); // перезагрузить образециндекс = 0; // отправляем данные UDP.beginPacket(udpAddress, udpPort); // https://arduino.stackexchange.com/q/81925/66902 // комментарий под вопросом UDP.write((const byte*) &samples, sizeof(samples)); UDP.endPacket(); //UDP.flush(); } } UDP-сервер:
var udp = require("dgram"); const fs = require("fs"); //const поток = fs.createWriteStream("./audio.raw"); const server = udp.createSocket("udp4"); пусть счетчик = 0; server.on("ошибка",функция(ошибка){ console.log("Ошибка: " + ошибка); сервер.закрыть(); }); server.on("сообщение",функция(сообщение,информация){ console.log("Данные получены от клиента: ", msg); console.log("Получено %d байт от %s:%d\n",msg.length, info.address, info.port); счетчик += 1; console.log(счетчик); // поток.write(msg); }); server.on("прослушивание", () => { пусть {адрес, порт} = server.address(); console.log(`Сервер прослушивает udp://${address}:${port}`) }); server.bind(4210, "0.0.0.0"); Как я могу это исправить?
Моя цель — семплировать с частотой 8000 Гц и 8 бит.
У меня есть простой код c/c++, который отправляет сообщения udp с аналогового входа моего ESP8266-12f через UDP. Проблема в том, что через пару секунд он перестает работать и обрывается соединение Wi-Fi.
#include #include // сетевые настройки #define WIFI_SSID "***" #define WIFI_PASS "***" const char *udpAddress = "192.168.2.174"; const int udpPort = 4210; const int аналогIn = A0; const int sampleSize = 100; // --------- uint8_t образцы [sampleSize]; int sampleIndex = 0; интервал таймераLastSample; WiFiUDP UDP; недействительная настройка() { // установка серийного номера Serial.begin(115200); // даем некоторое время для последовательного соединения задержка(3000); // обратная связь Serial.println("Подключиться к Wi-Fi..."); // подключаемся к Wi-Fi WiFi.begin(WIFI_SSID, WIFI_PASS); // ждем подключения Wi-Fi пока (WiFi.status() != WL_CONNECTED) { задержка(100); Serial.print("."); } Serial.println("Подключено!"); Serial.print("IP: "); Serial.print(WiFi.localIP()); Serial.println(""); } недействительный цикл() { if(WiFi.status() != WL_CONNECTED){ ЕСП.сброс(); } int сейчас = миллис(); если (сейчас — timerLastSample >= 1) { timerLastSample = сейчас; // читаем значение и преобразуем его в 8-битное значение // https://forum.arduino.cc/t/uno-convert- ... d/361220/2 образцы [sampleIndex] = AnalogRead (аналоговый вход) / 4; // только для разработки Serial.print("Образец собран: "); Serial.print(sampleIndex); Serial.print(" = "); Serial.println(образцы[sampleIndex]); образециндекс += 1; } если (sampleIndex == sampleSize) { Serial.println("Отправить пакет udp!"); // перезагрузить образециндекс = 0; // отправляем данные UDP.beginPacket(udpAddress, udpPort); // https://arduino.stackexchange.com/q/81925/66902 // комментарий под вопросом UDP.write((const byte*) &samples, sizeof(samples)); UDP.endPacket(); //UDP.flush(); } } UDP-сервер:
var udp = require("dgram"); const fs = require("fs"); //const поток = fs.createWriteStream("./audio.raw"); const server = udp.createSocket("udp4"); пусть счетчик = 0; server.on("ошибка",функция(ошибка){ console.log("Ошибка: " + ошибка); сервер.закрыть(); }); server.on("сообщение",функция(сообщение,информация){ console.log("Данные получены от клиента: ", msg); console.log("Получено %d байт от %s:%d\n",msg.length, info.address, info.port); счетчик += 1; console.log(счетчик); // поток.write(msg); }); server.on("прослушивание", () => { пусть {адрес, порт} = server.address(); console.log(`Сервер прослушивает udp://${address}:${port}`) }); server.bind(4210, "0.0.0.0"); Как я могу это исправить?
Моя цель — семплировать с частотой 8000 Гц и 8 бит.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Отбрасываются ли пакеты UDP, если контрольная сумма заголовка UDP неверна?
Anonymous » » в форуме C++ - 0 Ответы
- 48 Просмотры
-
Последнее сообщение Anonymous
-