Campanella Problemi Risolti

Dependencies:   mbed

Revision:
20:04c0e20e1399
Parent:
19:733cea5788a4
--- a/MicRobot-Rev085.cpp	Thu Jul 23 10:19:54 2020 +0000
+++ b/MicRobot-Rev085.cpp	Fri Jul 24 19:30:32 2020 +0000
@@ -50,31 +50,7 @@
 /* Routine di gestione Interrupt associata al fronte di salita del segnale di encoder */
 /**************************************************************************************/
 
-/**********************************************/
-//          IRQ associata a Rx da PC 
-//**********************************************/
-void pcRxInterrupt(void)
-{
-    // array per la ricezione dei messaggi da seriale
-    char cReadChar; 
-    
-    // ricevi caratteri su seriale, se disponibili   
-    while((pc.readable()))
-    {
-        // acquisice stringa in input e relativa dimensione
-        cReadChar = pc.getc(); // read character from PC
-        //myBLE.putc(cReadChar); // Diagnostica: write char to BLE
-        //pc.putc(cReadChar); // Diagnostica: write char to PC
-        
-        //pc.printf("W>: 0x%02x\n\r",cReadChar); // diagnostica
-       /* if(cReadChar == '0') // se scrivo '0', invia questa stringa
-        {
-            // DIAGNOSTICA:
-            // Invia Stringa di comando al Robot
-            myBLE.printf("\r\n> Prova di Trasmissione \r\n");
-         }*/
-    }
-}
+
 
 //**********************************************/
 //          IRQ associata a Rx da BLE 
@@ -85,48 +61,23 @@
     // carattere ricevuto da BLE
     char cReadChar; 
     
-    while((myBLE.readable()))
+    while(myBLE.readable())
     {
         // acquisice stringa in input e memorizza in array
         cReadChar = myBLE.getc(); // Read character
         //caRxPacket[nCharCount]=cReadChar;
         //nCharCount++;
-       // pc.printf("%c", cReadChar); // diagnostica
+        //pc.printf("%c", cReadChar); // diagnostica
         
-        // acquisisce il carattere di start comando o coordinate da APP
-        if(cReadChar=='(')
+        // +++++++++++++++++ INIZIO gestione Comando da Button +++++++++++++++++
+        // Ho ricevuto il comando da un Button se il primo carattere è una lettera maiuscola tra 'A' e 'Z' oppure tra 'a' e 'z'
+        if(((cReadChar > 0x40) && (cReadChar < 0x5A)) || ((cReadChar > 0x61) && (cReadChar < 0x7A))) // caratteri alfabetici da 'A' a 'T'
         {
-            // acquisisce il primo carattere di comando o di coordinate
-            cReadChar = myBLE.getc(); // Read character       
-           // pc.printf("%c", cReadChar); // diagnostica 
-            
-            // +++++++++++++++++ INIZIO gestione Comando da Button +++++++++++++++++
-            // Ho ricevuto il comando da un Button se il primo carattere è una lettera maiuscola tra A e T
-            if((cReadChar > 0x40) && (cReadChar < 0x55)) // caratteri alfabetici da 'A' a 'T'
-            {
-                // memorizza come comando il carattere appena letto
-                cCommandBLE = cReadChar; 
-                // legge e memorizza come paramentro il successivo carattere
-                cReadChar = myBLE.getc(); // legge parametro
-              //  pc.printf("%c", cReadChar); // diagnostica 
-                nParamBLE = cReadChar-0x30;
-                cReadChar = myBLE.getc(); // legge la ')' di chiusura comando       
-                //pc.printf("%c", cReadChar); // diagnostica 
-
-                // visualizza comando e parametro inviato da BLE
-               // pc.printf("> %c%d \r\n\r",cCommandBLE, nParamBLE); // diagnostica
-                if(cReadChar==')') 
-                    {
-                        //pc.printf("(fX , fY) = (%.1f , %.1f) \r\n", fX, fY); // diagnostica
-                    }
-                    else // dopo la Y e i numeri, mi attendo parentesi chiusa )
-                    {
-                        pc.printf("> Errore = %c invece di ) \r\n\n", cReadChar); // diagnostica
-                    }
-            }
-            // +++++++++++++++++ FINE gestione Comando da Button +++++++++++++++++
-        } // if(cReadChar == '(')
-    }// chiude il while
+            // memorizza come comando il carattere appena letto
+            cCommandBLE = cReadChar; 
+        }
+        // +++++++++++++++++ FINE gestione Comando da Button +++++++++++++++++
+    }
 }
 
 
@@ -149,16 +100,11 @@
     
     // inizializza variabili da BLE
     cCommandBLE = 0; // inizialmente nessun comando da BLE
-    cOldCommandBLE = 0; // inizialmente nessun comando da BLE
-    cParamBLE = 0;  // inizialmente nessun parametro da BLE
-    nParamBLE=0;    // inizialmente nessun parametro da BLE
-    nOldParamBLE=0; // inizialmente nessun parametro da BLE
-    bReset = false; //bReset = true/false quando riceve un comando (R1)/(R0) dalla APP
-    
-    // inizializza array di caratteri ricevuti
-    for(nIndex=0; nIndex < PACKETDIM; nIndex++)
-     {caRxPacket[nIndex]=0;}
-    nCharCount=0;                   
+     cOldCommandBLE = 0; // inizialmente nessun comando da BLE
+   
+    // Attiva la IRQ per la RX su seriale   
+    myBLE.attach(&BLERxInterrupt,Serial::RxIrq); // // entra in questa routine quando riceve un carattere dalla seriale del BLE
+                
      
     //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     //++++++++++++++ INIZIO Ciclo Principale +++++++++++++++++++    
@@ -168,49 +114,43 @@
     {
     
         //++++++++++++++++++++++++++ INIZIO Interpreta Comandi da Pulsanti della APP ++++++++++++++++++++++++++++++++++++++++++++
-               
-        if((cCommandBLE != cOldCommandBLE) || (nParamBLE != nOldParamBLE))
-        {
+        if(cCommandBLE != cOldCommandBLE)
+        {       
             switch (cCommandBLE)
             { 
-                case 'A': // entrata
+                case 'I': // entrata
                 { 
-                    if(nParamBLE==1)
-                    {
-                        myBLE.printf("Entrate\n\r"); 
-                    }
-                    else
-                    {
-                    }  
+                    pc.printf("Acceso Messaggio Entrata\n\r"); 
                 } break;
-                case 'B': // Cambio
+                case 'i': // entrata
+                { 
+                    pc.printf("Spento Messaggio Entrata\n\r"); 
+                } break;
+                case 'R': // Cambio
                 {   
-                    if(nParamBLE==1)
-                    {
-                        pc.printf("Cambio\n\r"); 
-                    }
-                    else
-                    {
-                    }  
+                    pc.printf("Acceso Messaggio Cambio\n\r"); 
+                } break;
+                case 'r': // Cambio
+                {   
+                    pc.printf("Spento Messaggio Cambio\n\r"); 
                 } break;
-                case 'C': // Uscita
+    
+                case 'U': // Uscita
                 {    
-                    if(nParamBLE==1)
-                    {
-                        pc.printf("Uscite\n\r"); 
-                    }
-                    else
-                    {
-                    }  
+                    pc.printf("Acceso Messaggio Uscite\n\r"); 
+                } break;
+                case 'u': // Uscita
+                {    
+                    pc.printf("Spento Messaggio Uscite\n\r"); 
                 } break;
                 
                 default: break;
             }
-            //pc.printf("Comando = %c, Parametro = %d \r\n", cCommandBLE, nParamBLE); // diagnostica
+            // ricorda di aver già compiuto l'operazione e non la ripetere fino a ricezione nuovo comando
             cOldCommandBLE = cCommandBLE;
-            nOldParamBLE = nParamBLE;
         }
         
+        
         //++++++++++++++++++++++++++++++++++++++++++++ FINE Interpreta Comandi da Pulsanti della APP ++++++++++++++++++++++++++++++++++++++++++++++++++++++
     } //while (true) Ciclo principale