help etherneth shield

salve
finlmente ho iniziato a smanettare con il mio nuovo arduino uno + etherneth shield.
guardate il mio codice:

#include <SPI.h>
#include <Ethernet.h>

int indexByteMessaggio;
byte inByte;
byte messaggio[] = {
  0, 0,};
 EthernetClient client; 
byte mac[] = {  0x90, 0xA2, 0xDA, 0x0D, 0x77, 0x4b }; 
IPAddress server(192,168,0,253); // server cucina

void setup()
              {
  Serial.begin(9600);
 delay(1000);
//////////////////////////////////////////////////////////////////
 
   if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop() 
    }
              }
void loop()
        {
 if (Serial.available() > 0) {
    inByte = Serial.read();
    if (inByte=='K'){
      indexByteMessaggio=0;
    }
    else
    if (inByte=='k'){
      indexByteMessaggio=0;
      }
    messaggio[indexByteMessaggio] = inByte;
    indexByteMessaggio = indexByteMessaggio + 1;}

 if (messaggio[0] == 'k' && messaggio[1] == 'x'){
  
     Serial.println("connecting...");
      if (Ethernet.begin(mac) == 0) {
        Serial.println("Failed to configure Ethernet using DHCP");
       for(;; ) ;
      }
if (client.connect(server, 80)){ 
    Serial.println("connected");
 
   client.println("GET /login.htm?usern=e&passw=e HTTP/1.0");
    client.println(); }
    messaggio[0]='0';
    messaggio[1]='0';
    
}

  if (messaggio[0] == 'k' && messaggio[1] == 'c'){
  
     Serial.println("connecting...");
      if (Ethernet.begin(mac) == 0) {
        Serial.println("Failed to configure Ethernet using DHCP");
        // no point in carrying on, so do nothing forevermore:
        for(;; );
      }
if (client.connect(server, 80)){ 
    Serial.println("connected");
 
   client.println("GET /index.htm?out1on=ON HTTP/1.0");
    client.println(); }
    messaggio[0]='0';
    messaggio[1]='0';
    
}

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

inviando tramite seriale " kx " il server 192,168,0,253 mi risonde correttamente e visualizzo
la rispettiva pagina html

se invio una seconda volta il codice " kx " o " kc " si blocca tutto. Se premo reset sull'arduino
il primo codice inviato tutto procede regolarmente ma al secondo codice inviato al client arduino si blocca
tutto come mai?

ringrazio anticipatamente per l'aiuto

O non hai copiato tutto o nel loop non chiudi il client client.stop() il buffer assai limitato si satura e saluti.

a cosa serve nel setup questo?

if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop() 
    }

perchè non c'e' ethernet.begin?
tralasciamo il fatto che non specifichi quale shield hai. Se c'e' la sd card vanno specificati i 2 pin di enable/disable 4-10

ciao

ciao
grazie 1000 per l'aiuto.
Ho eth shield con sd - sono solo alla prima settimana devo ancora studiare un po'

Spiega meglio cosa vuoi fare sarà più facile aiutarti

Non capisco cosa centra la seriale con la pagina htm

inviando tramite seriale " kx " il server 192,168,0,253 mi risonde correttamente e visualizzo la rispettiva pagina html

???
La pagina dovrebbe visualizzarsi sul browser ed essere chiamata da li ...
ciao

hai ragione scusa,
ho un display touch della screen demmel ( http://www.elettroshop.com/dpp-bt3224z63511-bfh-modulo-grafico-ilcd-320x240/ ) che programmato a parte (non gestito da arduino) invia sulla seriale stringhe
tipo kc o kx a due caratteri. Volevo interfacciarlo con l'arduino uno + eth shield con sd card in modo che
ricevendo il carattere "kc" arduino comandi una scheda server (CONTROLLO ETHERNET 4 INGRESSI E 4 USCITE FuturaNet: Il portale per makers ed elettronica by Futura Group codice 7100-FT823M) tramite lan.
La sheda controllo ethernet riceve comandi tipo htt://192.168.0.253index.htm?out1on=ON.
Con lo schetch che ho provato dopo ogni comando devo resettare l'arduino per continuare a funzionare.

Secondo me dovresti procedere in questo modo:
nel setup inizializzi la seriale e la scheda ethernet (con o senza dhcp)
nel loop invece controlli la ricezione della seriale e acquisisci il messaggio. Quando il messaggio è completo lo passi come parametro ad un "select case" che in base al codice letto richiama una funzione che invia i parametri alla seconda scheda ethernet.
Al posto del select case potresti crearti una sola funzione che accetta un parametro in ingresso e si comporta di conseguenza.

Esempio di pseudo codice:

#include bla bla bla

inizializzazioni variabili globali
bla bla bla

void setup() {
Serial.begin(9600);
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
for(;; ) ;
}
}

void loop() {
if (Serial.available() > 0) {

leggi il messaggio
}

if (messaggio == completo) {

funzione invia testo via ethernet(messaggio)
}
}

void invia testo via ethernet(messaggio){

apri client bla bla bla
invia il testo xxyyzz in base al comando ricevuto
chiudi il client bla bla bla
}