Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Risolto! Comandare upanel in modo asincrono anche da browser
#11
Perché non puoi usare la stessa porta sia per raggiungere il modulo e il webserver .
Devi impostare una porta tcp diversa da quelle che usi per raggiungere il modulo altrimenti quando fai richieste get da browser, la porta tcp rimane occupata.
Reply
#12
(01-12-2017, 07:54 AM)Enzo147 Wrote: Perché non puoi usare la stessa porta sia per raggiungere il modulo e il webserver .
Devi impostare una porta tcp diversa da quelle che usi per raggiungere il modulo altrimenti quando fai richieste get da browser, la porta tcp rimane occupata.

Problema risolto.
Sono un fesso, ho settato sul router la porta WAN 5555 e LAN 5555 lasciando le porte standard 80 e 81 su porte differenti.
Grazie mille.
Reply
#13
Felice di esserti stato d'aiuto .
Ciao
Enzo
Reply
#14
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
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)