ESP8266 - прерывания отправки UDP
Я пытаюсь передать данные с ESP8266 (NodeMCU ESP12E) на свой ноутбук. Я пишу код ESP с помощью Arduino IDE. Я могу получать правильные пакеты (каждый содержит 400 байт) в консольной программе Visual Basic. Однако, чтобы увидеть, является ли передача непрерывной или нет, я переключал выходной контакт всякий раз, когда UDP.endpacket() возвращает 1. Я наблюдал за формами сигналов на DSO. Я обнаружил, что UDP.endpacket() НЕ возвращает 1 много раз, и в течение значительного периода времени (миллисекунд) нет передачи от ESP. Смотрите прикрепленные формы сигналов.
Почему UDP.endpacket() возвращает 0 так долго? Почему прерывается передача UDP? Как это решить? Не стесняйтесь запрашивать более подробную информацию, если необходимо.
Код:
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
const char* ssid = "Connectify-me33";
const char* password = "donfour276";
WiFiUDP Udp;
unsigned int localUdpPort = 65000;
unsigned int dest_port = 11000;
unsigned char clientBuf[400];
int clientBuf_len=0;
#define test_pin 5
int return_udp_fcn = 0;
void setup()
{
WiFi.begin(ssid, password);
delay(5000);
Udp.begin(localUdpPort);
pinMode(test_pin, OUTPUT);
digitalWrite(test_pin, HIGH);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
}
void loop()
{
digitalWrite(test_pin, HIGH);
//заполнение буфера
for(clientBuf_len = 0; clientBuf_len<=399; clientBuf_len++)
{
clientBuf[clientBuf_len] = 0x7E;
}
//UDP-передача
Udp.beginPacket("172.22.0.1", dest_port);
Udp.write((const uint8_t *)clientBuf, 400);
return_udp_fcn = 0;
return_udp_fcn = Udp.endPacket();
if(return_udp_fcn){
digitalWrite(test_pin, LOW);
}
delayMicroseconds(100);
}
1 ответ
Я думаю, вам нужна delay(1);
после вызова write()
.
Есть/была ошибка, при которой базовый буфер файлы и не может получить время для очистки. Похоже, что это потребует изменения прошивки ESP8266 от производителей, прежде чем это будет исправлено должным образом.
Посмотрите, что вы думаете:
- ESP8266 Аналоговое чтение мешает Wi-Fi?
- Каково использование зарезервированных контактов и контактов SDD2, SDD3 NodeMCU?
- Управление реле 5В с помощью Wemos D1 R1
- Могу ли я использовать выход 3,3 В Arduino напрямую к esp8266?
- ESP8266 UDP multicast не принимает пакеты
- Достаточно ли 1 МБ флэш-памяти для загрузки OTA в ESP-01?
- Программный последовательный конфликт с Wi-Fi на ESP8266
- Веб-сервер ESP8266 недоступен через 2 минуты после сброса