Ciao Simone,
riprendo questa interessante discussione perche sto cercando di capire un po' il funzionamento di questi moduli utilizzando i socket TCP.
Dello sketch che hai postato (che ho quotato alla fine) ci sono alcune parti che non mi sono chiare e ti ringrazio se riuscirai a spiegarmele:
Code:
Serial.println("$TCP0:LAHQ::2020:OK");
Crei un server con socket 0 che si disconnette quando ricevuto il pacchetto correttamente. Perche viene inviato l'OK finale?
Code:
if (Msg.substring(0,18).equals("$TCP0:>H:GET /CMD?"))
{
int p = Msg.substring(18).indexOf(" ");
if (p > 0)
{
Msg = "#"+Msg.substring(18,18+p);
Serial.println(Msg);
}
}
Potresti dettagliare il funzionamento di questa If e nello specifico il significato della prima riga ("$TCP0:>H:GET /CMD?")
// CODICE ORIGINALE COMPLETO
Code:
void setup() {
// Initialize Serial Port
Serial.begin(57600);
// Let uPanel start
delay(3000);
// Discharge old partial messages
Serial.println("");
// Send The Panel (A LED and a Switch)
Serial.println("$P:Dg21;/5T*25fb:Prova;=*16/30{mL1G:0;|*12W1:0;|T:Relè 1;}/{mL2G:0;|*12W2:0;|T:Relè 2;}/30*20T#FF0ht3,000:Prova relè;");
//server
Serial.println("$TCP0:LAHQ::2020:OK");
// Initialize digital output pin
digitalWrite(8, 0);
pinMode(8,OUTPUT);
digitalWrite(9, 0);
pinMode(9,OUTPUT);
}
String Msg;
void loop() {
int c;
while ((c = Serial.read()) > '\n') Msg += (char) c; // Read incoming chars, if any, until new line
if (c == '\n') { // is the message complete?
if (Msg.substring(0,18).equals("$TCP0:>H:GET /CMD?")){
int p = Msg.substring(18).indexOf(" ");
if (p > 0){
Msg = "#"+Msg.substring(18,18+p);
Serial.println(Msg);
}
}
if (Msg.equals("#W20")) {digitalWrite(9,0); Serial.println("#L20");}
if (Msg.equals("#W21")) {digitalWrite(9,1); Serial.println("#L21");}
if (Msg.equals("#W10")) {digitalWrite(8,0); Serial.println("#L10");}
if (Msg.equals("#W11")) {digitalWrite(8,1); Serial.println("#L11");}
Msg = "";
}
}
Grazie