Esp8266 UDP пакетBuffer не удаляет себя - PullRequest
0 голосов
/ 13 ноября 2018

Я сделал небольшой звуковой визуализатор с двумя esp8266.Клиентская сторона отправляет числа от 0 до 12 по Udp на серверную сторону (каждую миллисекунду или около того).светодиоды (на стороне сервера) должны срабатывать только в том случае, если это число> 8, но когда я отключаю музыку после длинного потока данных> 8, светодиоды продолжают мигать в течение пары секунд.

char packetBuffer[UDP_TX_PACKET_MAX_SIZE];
bool udp_mode_7 = false;

void mode_7() {
  if (!udp_mode_7) {
    Udp.begin(localUdpPort);
    udp_mode_7 = true;
  }
  int packetSize = Udp.parsePacket();
  if (packetSize) {
    Udp.read(packetBuffer, UDP_TX_PACKET_MAX_SIZE);
    int value = packetBuffer[0] * 256 + packetBuffer[1];
    if (value / 256 > strip.numPixels() - mode_7_threshold) {
      int r = random(255);
      int g = random(255);
      int b = random(255);
      for (int i = 0; i < strip.numPixels(); i++) {
        strip.setPixelColor(i, r, g, b);
        strip.setPixelColor(strip.numPixels() - i, r, g, b);
        strip.show();
        delay(20);
        if (i == 6) {
          break;
        }
      }
      for (int i = 0; i < strip.numPixels(); i++) {
        strip.setPixelColor(i, 0, 0, 0);
        strip.setPixelColor(strip.numPixels() - i, 0, 0, 0);
        strip.show();
        delay(20);
        if (i == 6) {
          break;
        }
      }
    }
    for(int i = 0; i < UDP_TX_PACKET_MAX_SIZE; i++) packetBuffer[i] = 0;
//    Udp.stop();
//    udp_mode_7 = false;
  }
}
...