Pages: [1]   Go Down
Author Topic: TCP client.connect() restart ethernet ad ogni post.  (Read 1066 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 !!
Logged

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10106
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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);
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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();
  }
Logged

Pages: [1]   Go Up
Jump to: