Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Panel non visualizzato
#1
Question 
Invio questi due panel su un iPhone.
Devo visualizzare il primo panel che rimane in attesa del tasto "START" e poi deve visualizzare il secondo panel, ma non visualizzo niente.
Non capisco dove sta l'errore, ho bisogno di un aiuto.
Saluti
Code:
/*********************************************************
*   Erogatore v 2.0
*   12 dicembre 2018
*   Arduino UNO e uPanel
*   Stepper motor 28BYJ-48
*   EzioGi
**********************************************************/

void setup() {
 Serial.begin(57600);
 delay(3000);
 Serial.println("");
 SendInitScreen();  
 }

void SendInitScreen()        
 {
  Serial.print("D!28E;//{^*30%80,100!28B,144{ht2,000,1{*9T:Erogatore;_*9T:di crocchette;}}");
  Serial.println("/3{*5T:versione 2.0;}_{*4T:EzioGi;}}//20*15B0:START;");
  }
 
void SendPanel()
 {
 Serial.print("D!06F;/{-r30!228,114*15{T:Automatico;|L13G:0:;_T:Riserva;|L22R:0;}|{^*10L35:0;&L45:0;_T:Erogazioni;}}");
 Serial.println("/*11WAG:0;/20A1-*20-5r20!00F,DDD>:0:10:100:!F00;/20{-r30!228,114*15{T:Allarme 1;|L32Y:0;_T:Allarme 2;|L42B:0;T:Allarme 3;|L53G:0;_T:Allarme 4;|L62R:0;}");
 }
 
void loop() {


}
Reply
#2
Ho corretto il codice aggiungendo "\n$P" e adesso mi visualizza il primo pannello ma se premo start non passa a visualizzare il secondo pannello.
Da monitor abilitato vedo che mi arriva indietro il comando "#B0P" ma non succede niente.
Ho copiato un pezzo dello sketch  che mi serviva dallo sketch "Volmetro".
Ciò nonostante non funziona, non viene interpretato dall'istruzione if (Msg.substring(0,4).equals("#B0P")) SendPanel();  // Display Panel
Anche se premo il tasto manuale non funziona.
Non capisco il perchè.
Il codice è:
Code:
String Msg;
long int n = 0;  // Contatore
unsigned int Rsv = 20;    // Riserva
unsigned int Max = 100;  // Massimo

void setup() {
 
 Serial.begin(57600);
 delay(3000);
 SendSplashScreen();
 
}

void SendSplashScreen()        
 {
  Serial.print("\n$P:D!06F;//{^*30%80,100!22B,14F{ht2,000,1{*9T:Erogatore;_*9T:di crocchette;}}");
  Serial.println("/3{*5T:versione 3.0;}_{*4T:EzioGi;}}/20*15B0:START;");
}
 
void SendPanel()
 {
 Serial.print("\n$P:D!06F;/{-r30!228,114*15{T:Automatico;|L13G:1:;_T:Riserva;|L22R:0;}|{^*10L35:0;&L45:0;_T:Erogazioni;}}");
 Serial.print("/*11W0G:0;/20A1-*20-5r20!00F,DDD>:0:100:100:!00F;{T#FFF*15fa:% livello crocchette;}");
 Serial.println("//20{-r30!228,114*15{T:Allarme 1;|L52Y:0;_T:Allarme 2;|L62B:0;T:Allarme 3;|L73G:0;_T:Allarme 4;|L82R:0;}");
 }
 
void loop() {
 
int c;
 while ((c = Serial.read()) > '\n') Msg += (char) c;  // Read incoming chars, if any, until new line
 if (c == '\n')                                       // is message complete?
 {
   if (Msg.substring(0,4).equals("#B0P")) SendPanel();  // Display Panel
   if (Msg.substring(0,4).equals("#W01")) Manuale();    // una erogazione manuale
  }

Msg = "";  
}

//******************** Funzioni ***************************

void Manuale()
 {
   Serial.println("#L130");  // Spegne il led L1
   Serial.println("#W01");   // Accende il Switch
   Erogaz();  // Eroga una porzione
   IncrCont();   // Incrementa Contatore Erogazioni
   DecrBarraAna(); // Decrementa livello barra A1
   delay(3000);    // ritardo fittizio, poi verrà tolto
   Serial.println("#L131");  // Accende il led L1
   Serial.println("#W01");   // Spegne il Switch
 // Torna in automatico tramite interrup generato dal RTC
 }
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)