Angelo Carrieri / Mbed 2 deprecated ATCommands

Dependencies:   mbed

Revision:
2:52b0e1971195
Parent:
1:7f5f80b47892
Child:
3:1df7773ae017
--- a/main.cpp	Fri May 04 15:23:13 2018 +0000
+++ b/main.cpp	Wed May 09 11:13:28 2018 +0000
@@ -1,4 +1,3 @@
-
 #include "mbed.h"
 #include "string.h"
 #include "stdio.h"
@@ -11,12 +10,13 @@
 #define MRxBDIM 400
 #define ARxBDIM 400
 
-// Numero dei byte da inviare allo SLAVE per l'accensione del led
+// Numero di byte da inviare per l'accensione del led tramite l'interfaccia SPI
 #define NumByte 16
 
 // Configurazione della porta seriale del computer
 Serial pc(USBTX, USBRX);     
 
+// Dichiarazione per il LED di diagnostica
 DigitalOut led(LED2);
 
 // Configurazione della porta seriale UART
@@ -26,29 +26,27 @@
 // Configurazione dei parametri della SPI
 SPI myspi(PA_7, PA_6, PA_5, NC);
      
+// Vettore che conterrà i byte ricevuti in risposta al comando AT inviato
 char MRxB[MRxBDIM];
+
+// Vettore che conterrà i byte ricevuti in risposta all'invio automatico della sequenza di comandi AT
 char ARxB[ARxBDIM];
-char c;
 
-// Vettore che conterrà i byte da trasmettere al led
-uint8_t VettoreLED[NumByte];
-    
+// Vettore che conterrà i byte da trasmettere al led tramite l'interfaccia SPI
+uint8_t Vled[NumByte];
+
+// Dichiarazione del parametro temporale t
+Timer t;
+
+// Dichiarazioni delle variabili locali
+char c;
 int i=0;
 int j=0;
-
 int E=0;
 int R=0;
 int ER=0;
 int ERR=0;
-
-int finelis=0;
-int stoplis=0;
-
-/*
-int TxSIZE;
-int MRxBSIZE;
-int ARxBSIZE; */
-
+int endlis=0;
 volatile char input;
 
 // Funzione per l'emissione di luce verde tramite l'interfaccia SPI
@@ -61,15 +59,15 @@
 void LedOFF();
 
 // Funzione per la ricerca della parola ERROR nel vettore ricevuto dal modem in risposta al comando digitato
-void GestERR1();
+void ERR1();
 
 // Funzione per la ricerca della parola ERROR nel vettore ricevuto dal modem in risposta alla sequenza prestabilita di comandi
-void GestERR2();
+void ERR2();
 
 
 int main()
 {
-    
+   // FILE *flis;
     // Configurazione del baud rate per la comunicazione col computer
     pc.baud(9600);
     
@@ -78,20 +76,34 @@
     myspi.frequency(3333333.3);
     
     printf("\r\n");
-    printf("            PROGRAMMA PER L'INVIO DI COMANDI AT SU PORTA SERIALE\r\n");
-    printf("______________________________________________________________________________\r\n");
+    printf("              PROGRAMMA PER L'INVIO DI COMANDI AT SU PORTA SERIALE\r\n");
+    printf("________________________________________________________________________________\r\n");
+    printf("\r\n");
+    printf("  ----------------------------------------------------------------------------\r\n");
+    printf(" | Premere il tasto 'm' per inserire un comando AT                            |\r\n");
+    printf(" | Premere il tasto 'a' per l'invio automatico della sequenza di comandi AT   |\r\n");
+    printf(" | Premere il tasto 'e' per uscire dal programma                              |\r\n");
+    printf("  ----------------------------------------------------------------------------\r\n");
+    printf("________________________________________________________________________________\r\n");
     printf("\r\n");
-    printf("  ---------------------------------------------------------------\r\n");
-    printf(" | Premere 'm' per inserire un comando AT                        |\r\n");
-    printf(" | Premere 'a' per inviare la sequenza automatica di comandi AT  |\r\n");
-    printf(" | Premere 'e' per uscire dal programma                          |\r\n");
-    printf("  ---------------------------------------------------------------\r\n");
-    printf("______________________________________________________________________________\r\n");
-    printf("\r\n");
+    
+/*
+    flis=fopen("lista.txt","r");
+    if((flis=fopen("lista.txt","r"))==NULL)
+    {
+        printf("Impossibile aprire il file");
+    }
+    
+    while(!feof(flis))
+    {
+        fgets(vett,1,flis);
+        i++;
+        printf("%c",vett[i]);
+    }*/
 
     while(1)
     {
-     
+        
         // Reset vettore MRxB
         for(i=0;i<MRxBDIM;i++)
         {
@@ -101,66 +113,83 @@
         // Reset vettore ARxB
         for(j=0;j<ARxBDIM;j++)
         {
-            ARxB[i]='\0';
+            ARxB[j]='\0';
         }
         
-        
-
         input=pc.getc();
     
         if((input=='m')||(input=='M'))
         {
-            
-            
+               
             printf("Inserire il comando:  ");
             
             while(1)
             { 
                 char c = pc.getc();
                 pc.putc(c);
+            
                 at.write(&c,1);
     
-                if(c=='\r') {goto esc;}
+                if(c=='\r') 
+                {
+                    t.start();
+                    goto esc;
+                }
             }
         
             esc:
             
             printf("\r\n\r\nRisposta:\r\n");
  
-            at.read(MRxB, MRxBDIM);
-        
+            at.read(MRxB, MRxBDIM);   
+            
+            t.stop();
+            
             for(i=0;i<MRxBDIM;i++)
-            {
+            {   
                 pc.printf("%c",MRxB[i]);
             }
             
+            pc.printf("\n\rTempo trascorso dall'invio del comando: %f secondi\n\r", t.read());
+            
+            t.reset();  
+              
             printf("______________________________________________________________________________\r\n");
             printf("\r\n");
             
-            GestERR1();
+            ERR1();
             
         } // End if
          
         if ((input=='a')||(input=='A'))
         {
-            printf("...invio della sequenza automatica di comandi..."); 
-            printf("\r\n");      
+            printf("...invio automatico della sequenza di comandi..."); 
+            printf("\r\n");     
+             
             at.send("AT");
             at.send("AT+CREG?");
      
+            t.start();
+            
             printf("\r\nRisposta:\r\n");
  
             at.read(ARxB, ARxBDIM);
+            
+            t.stop();
         
             for(i=0;i<ARxBDIM;i++)
             {
                 pc.printf("%c",ARxB[i]);
             }
+            
+            pc.printf("\n\rTempo trascorso dall'invio della sequenza di comandi: %f secondi\n\r", t.read());
+            
+            t.reset();  
         
             printf("______________________________________________________________________________\r\n");
             printf("\r\n");
         
-            GestERR2();
+            ERR2();
         
          } // End if
          
@@ -168,19 +197,18 @@
          {
              printf("Il programma e' stato chiuso\n\r\n\r");
              LedOFF();
-             led=0;
+    
              exit(0);
          }
-
      
     } // End while
 
 }    
 
-void GestERR1()
+void ERR1()
 {
             
-            finelis=0;
+            endlis=0;
             
             E=0;
             R=0;
@@ -192,15 +220,15 @@
             {
                 if(ERR==0)
                 { 
-                    if((MRxB[i])==' ') {goto salto;}
+                    if((MRxB[i])==' ') {goto jump1;}
                 
                     if(E==0)
                     { 
                         if ((MRxB[i])=='E')
                         {
-                            finelis++;
+                            endlis++;
                             E=1;
-                            goto salto;
+                            goto jump1;
                         }
                     }
                     if(ER==0)
@@ -209,16 +237,16 @@
                         {
                             if((MRxB[i])=='R') 
                             {
-                                finelis++;
+                                endlis++;
                                 R=1;
                                 ER=1;
-                                goto salto;
+                                goto jump1;
                             }
                             else
                             {
                                 E=0;
-                                finelis=0;
-                                goto salto;
+                                endlis=0;
+                                goto jump1;
                             }
                         }
                     }
@@ -226,13 +254,13 @@
                     {
                         if((MRxB[i])=='R')
                         {
-                            finelis++;
+                            endlis++;
                             ERR=1;
-                            goto salto;
+                            goto jump1;
                         }
                         else
                         {
-                            finelis=0;
+                            endlis=0;
                             E=0;
                             R=0;
                             ER=0;
@@ -241,13 +269,13 @@
                 
                 } // End if(ERR==0)
                      
-            salto: 
+            jump1: 
             
             led=1;
                       
             } // End ciclo for
             
-            if(finelis==3) 
+            if(endlis==3) 
             {
                 LedRED();
             }
@@ -258,10 +286,10 @@
 
 }
 
-void GestERR2()
+void ERR2()
 {
             
-            finelis=0;
+            endlis=0;
             
             E=0;
             R=0;
@@ -273,15 +301,15 @@
             {
                 if(ERR==0)
                 { 
-                    if((ARxB[i])==' ') {goto salto;}
+                    if((ARxB[i])==' ') {goto jump2;}
                 
                     if(E==0)
                     { 
                         if ((ARxB[i])=='E')
                         {
-                            finelis++;
+                            endlis++;
                             E=1;
-                            goto salto;
+                            goto jump2;
                         }
                     }
                     if(ER==0)
@@ -290,16 +318,16 @@
                         {
                             if((ARxB[i])=='R') 
                             {
-                                finelis++;
+                                endlis++;
                                 R=1;
                                 ER=1;
-                                goto salto;
+                                goto jump2;
                             }
                             else
                             {
                                 E=0;
-                                finelis=0;
-                                goto salto;
+                                endlis=0;
+                                goto jump2;
                             }
                         }
                     }
@@ -307,13 +335,13 @@
                     {
                         if((ARxB[i])=='R')
                         {
-                            finelis++;
+                            endlis++;
                             ERR=1;
-                            goto salto;
+                            goto jump2;
                         }
                         else
                         {
-                            finelis=0;
+                            endlis=0;
                             E=0;
                             R=0;
                             ER=0;
@@ -322,13 +350,13 @@
                 
                 } // End if(ERR==0)
                      
-                salto:
+                jump2:
                 
                 led=1;
                               
             } // End ciclo for
             
-            if(finelis==3) 
+            if(endlis==3) 
             {
                 LedRED();
             }
@@ -341,66 +369,67 @@
 
 void LedGREEN()
 {
-          
-          // Il primo led emette la luce verde         
+                       
+          // Cicli per la configurazione del vettore Vled
           for(i = 0; i <= 3; i++)      
-              VettoreLED[i]=204; 
+              Vled[i]=204; 
                  
           for(i = 4; i <= 7; i++)     
-              VettoreLED[i]=136;      
+              Vled[i]=136;      
              
           for(i = 8; i <= 11; i++)    
-              VettoreLED[i]=136; 
+              Vled[i]=136; 
                       
           for(i = 12; i <= NumByte-1; i++)     
-              VettoreLED[i]=136; 
+              Vled[i]=136; 
     
-          // Ciclo per l'invio dei frame al primo led   
+          // Ciclo per l'invio dei frame al led   
           for(j = 0; j < NumByte; j++)  
-              myspi.write(VettoreLED[j]);      
-
+              myspi.write(Vled[j]);      
+              
 }
 
 void LedRED()
 {
-          // Il primo led emette la luce verde         
+                 
+          // Cicli per la configurazione del vettore Vled
           for(i = 0; i <= 3; i++)      
-              VettoreLED[i]=136; 
+              Vled[i]=136; 
                  
           for(i = 4; i <= 7; i++)     
-              VettoreLED[i]=204;      
+              Vled[i]=204;      
              
           for(i = 8; i <= 11; i++)    
-              VettoreLED[i]=136; 
+              Vled[i]=136; 
                       
           for(i = 12; i <= NumByte-1; i++)     
-              VettoreLED[i]=136; 
+              Vled[i]=136; 
     
-          // Ciclo per l'invio dei frame al primo led   
+          // Ciclo per l'invio dei frame al led   
           for(j = 0; j < NumByte; j++)  
-              myspi.write(VettoreLED[j]);      
+              myspi.write(Vled[j]);      
 
 }
 
 void LedOFF()
 {
-          
-          // Il primo led emette la luce verde         
+         
+          // Cicli per la configurazione del vettore Vled    
           for(i = 0; i <= 3; i++)      
-              VettoreLED[i]=136; 
+              Vled[i]=136; 
                  
           for(i = 4; i <= 7; i++)     
-              VettoreLED[i]=136;      
+              Vled[i]=136;      
              
           for(i = 8; i <= 11; i++)    
-              VettoreLED[i]=136; 
+              Vled[i]=136; 
                       
           for(i = 12; i <= NumByte-1; i++)     
-              VettoreLED[i]=136; 
+              Vled[i]=136; 
     
-          // Ciclo per l'invio dei frame al primo led   
+          // Ciclo per l'invio dei frame al led   
           for(j = 0; j < NumByte; j++)  
-              myspi.write(VettoreLED[j]);      
+              myspi.write(Vled[j]);      
 
 }