Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: main.cpp
- 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]);
}