Go Down

Topic: TCP client.connect() restart ethernet ad ogni post. (Read 1 time) previous topic - next topic

niomix

Buona a tutti.

Stavo in questi giorni giocando con la ethernet shield SD + arduino UNO.

Non riesco a capire 2 cose:
Per ogni post o get devo rinizializzare la scheda con  Ethernet.begin(mac, ip, gateway, subnet); e client.connect ?
Se non lo faccio non si connette piu..

Non posso aprire una connessione TCP e con un timing definito fare le GET/POST senza doverla chiudere ed aprire ogni volta ?
Grazie mille !!

lesto

da quel che ho capito arduino lancia le GET e POST.
allora, secondo il protocollo HTTP(versione 1.0, la 1.1 non la conosco bene) ogni richiesta è una connessione.
Quindi sei obbligato a fare client.connect ma non Ethernet.begin(mac, ip, gateway, subnet);
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

niomix

Grazie della risposta, VERO ! non mi ricordavo piu.
La versione 1.1 mantiene la connessione a differenza del 1.0
Nella risposta però vedo HTTP/1.1 200 OK
magari provo a fare un while (client.connected()) { if (client.available()) {....
Forse qualche cosa cambia......

per il secondo problema se non reinizializzo la scheda la connessione client.connected() = FALSE.

Qualche idea ?
posto il codice...
//----------------------------------------------------------------------------
Client localClient(remoteServer, 80);

void setupEthernet()
{
  localClient.flush();
  Serial.println("Setup ethernet...");
  Ethernet.begin(mac, ip, gateway, subnet);
  Client remoteClient(255);
  delay(500);
  Serial.println("Setup complete !");
}
void Pachube()
{
Serial.println("Pachube");
  if (localClient.connect())
  {
      ftoa(pachube_data, SensorA0Reading, 2);
      content_length = strlen(pachube_data);
      localClient.print("GET /api/");
      localClient.print(CONTROL_FEED_ID);
      localClient.print(".csv HTTP/1.1\nHost: pachube.com\nX-PachubeApiKey: ");
      localClient.print(PACHUBE_API_KEY);
      localClient.print("\nUser-Agent: Arduino (Pachube controller v1.1)");
      localClient.println("\n");

      localClient.print("PUT /api/");
      localClient.print(SHARE_FEED_ID);
      localClient.print(".csv HTTP/1.1\nHost: pachube.com\nX-PachubeApiKey: ");
      localClient.print(PACHUBE_API_KEY);

      localClient.print("\nUser-Agent: Arduino (Pachube controller v1.1)");
      localClient.print("\nContent-Type: text/csv\nContent-Length: ");
      localClient.print(content_length);
      localClient.print("\nConnection: close\n\n");
      localClient.print(pachube_data);
      localClient.print("\n");
     Serial.print("finished PUT: ");
     last_connect = millis();
  }
  else
  {
  Serial.print("Ethernet Down...");
   localClient.stop();
   last_connect = millis();
   setupEthernet();
  }

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy