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 blavoid 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
}