Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Risolto! Comandare upanel in modo asincrono anche da browser
#6
Enzo,

il codice che ti ho riportato, aggiorna soltanto lo stato della grafica, ma non agisce sui rele. Quello lo deve fare Arduino in base al messaggio che riceve. Il modo più semplice è modificare il tuo sketch come segue:

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 = "";
 } 
   
}

In pratica ho spostato in alto la gestione del messaggio della socket TCP e ho inserito il comando ricevuto in Msg in modo che i test successivi
funzionino come se il messaggio arrivasse da pannello.
Reply


Messages In This Thread
RE: Comandare upanel in modo asincrono anche da browser - by Simone - 06-14-2016, 06:35 AM

Forum Jump:


Users browsing this thread: 1 Guest(s)