Зависает EthernetClient

Вопросы программирования в системе Ардуино
dark
Сообщения: 1
Зарегистрирован: 13 ноя 2019, 09:52

Зависает EthernetClient

Сообщение dark » 26 ноя 2019, 14:46

Здравствуйте может кто-то уже сталкивался WebClient с W5500 и библиотекой Ethernet2.h или ENC28J60 с UIPEthernet.h. Проблема заключается в зависании подключения client.connect(server, 80)). Раз в минуту идет подключение к серверу методом client.connect(server, 80)) и отправка get или post запроса на данный сервер. Но бывает спустя энное количество времени при очередном подключении к серверу он становиться недоступен (хотя сам ресурс доступен). Помогает только перезагрузка arduino.

Как это можно победить?

Код: Выделить всё

#include <SPI.h>
#include <Ethernet2.h>

byte mac[] = {0xFC, 0x9A, 0xC7, 0x52, 0xE5, 0xFE};

IPAddress server(109 , 195 , 53 , 209);
IPAddress ip(192, 168, 0, 177);
unsigned long Time;
EthernetClient client;

void setup() {
  Serial.begin(115200);
  Serial.println(F("start ..."));

  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    Ethernet.begin(mac, ip);
  }
  delay(1000);
  Serial.println("connecting...");

  Serial.print(F("IP = "));
  Serial.println(Ethernet.localIP());
}


void GET()
{
  Serial.println("GET");

  if (client.connect(server, 80)) {
      Serial.println("connected");

  client.println("GET /Sensor/hs/DeviceData/SetData?P3=3&Arduino HTTP/1.1");
  client.println("Host: server");
  client.println("keep-alive");
  client.println("Connection: close");
  client.println();
  }
  else {
    Serial.println("connection failed");  //  "подключение не удалось"
  } 
}

  void loop()
  {
    if ((millis() - Time) >= 20000)
    {
      Time = millis();
      GET();
    }

    if (client.available()) {
      char c = client.read();
      Serial.print(c); 
    }
   
    if (!client.connected()) {
        client.stop();
    }
  }


Вернуться в «Программирование Ардуино»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя