Зависает код

Тема в разделе "Arduino & Shields", создана пользователем Михаил123, 20 июл 2022.

  1. при получении "левого" пакета тз ниоткуда, даже при выключенном сетевом кабеле! зависает после последней строки.
    Как такое может быть? Что там взрывается?

    Код (C++):
    if (!NoEnternet)
      {
    #include "Ethernet_W5500.h"
    #include "EthernetUdp.h"
    void setup()  
    {  
             
        Serial.begin(115200);
        Serial3.begin(115200);
       Ethernet.begin(mac, myip);
                    Serial.println("получение IP ");
                    //Ethernet.begin(mac);
                    udp.begin(354);
    }
    void loop()
    {
          //Serial.println("Проверяю наличие пакета ");
           // считываем размер принятого пакета
          if (udp.parsePacket())
          {
              int size = udp.parsePacket();
              // есть пакет Udp, выводим информацию о пакете
              Serial.print("Получил пакет от ");
              IPAddress ipFrom = udp.remoteIP();
              Serial.println(ipFrom);
              Serial.print("Size ");
              Serial.print(size);
              Serial.print(", port ");
              Serial.println(udp.remotePort());
          }
       
       }
     
  2. alexgor261

    alexgor261 Нуб

    С первого взгляда все нормально в коде, надо проверить дома на своём устройстве.
     
  3. стандартный код, из примера. пока ничего нет udp.parsePacket() = 0 - крутится и крутится, а как что залетит, то все. И еще одна особенность - залетает не один. Сколько - не знаю, т.к. на втором виснет. И залетает без шнура - т.е. какие то шумы или наводки.
     
  4. может, там заходит какое то дикое число в значениях?
     
  5. fogary

    fogary Гик

    Вместо EthernetUDP.parsePacket() проверять по EthernetUDP.available() не пробовали?
     
  6. попробую
     
  7. User248

    User248 Гик

    А что это такое вначале? Так нельзя.
    Код (C++):
    if (!NoEnternet)
      {
    #include "Ethernet_W5500.h"
    #include "EthernetUdp.h"
     
  8. это когда когда сети нет, либо тестирование без сети
     
  9. parovoZZ

    parovoZZ Гуру

    так такие вещи делаются через директивы препроцессора.
     
  10. это заглушка на время, пока не разберусь с зависанием при приеме шлака по сети.
     
  11. parovoZZ

    parovoZZ Гуру

    в таком виде оно не работает как ты хочешь.