Program which allow to send/receive and treat SMS messages by connecting a GSM module to the mbed.

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 //Program d'émission/reception et traitement d'SMS
00002 #include "mbed.h"
00003 
00004 //DigitalOut myled(LED1);
00005 //Module GSM connecté sur les pin 13 et 14
00006 Serial GSM(p13,p14);
00007 //Declaration de l'interface serie du PC
00008 Serial pc(USBTX,USBRX);
00009 
00010 //Flush serial buffer
00011 void FlushGSM(void) { char char1 = 0; while (GSM.readable()) { char1 = GSM.getc(); } return; }
00012 
00013 int main() {
00014     int CPIN = 1234;//Code PIN de la carte SIM
00015     char NumTel[] = "0600000000";
00016     unsigned char i = 0;
00017     unsigned char j = 0;
00018     unsigned char CtrlZ = 0x1A;
00019     bool Flag = false;
00020     char r[]=""; //Chaine de caractère pour récupérer les réponses du module GSM
00021     GSM.baud(115200);//Vitesse de com avec le module GSM à 11520 Bauds
00022     GSM.format(8,Serial::None,1); //Format de la trame serie
00023     
00024     //Envoi du code PIN de la puce
00025     GSM.printf("AT+CIND=%d",CPIN);
00026     
00027     while(!GSM.readable()){;}//Attente de la réponse du module
00028     //Récupération de la réponse
00029     while(GSM.readable())
00030     {
00031         r[i] = GSM.getc();
00032         i++;    
00033     }
00034     //Si le Code pin entré est correcte, la SIM répondra par un OK
00035     //Donc, il faut chercher la chaine OK dans la réponse
00036     for(j=i-1;j--;0)
00037     {
00038         if((r[i]=='K')||(r[i]=='O'))
00039         {
00040             pc.printf("Code PIN correct !!!\r\n");
00041         }
00042         else
00043         {       
00044             pc.printf("Erreur code PIN !!!\r\n");
00045             return 0;
00046         }
00047     }
00048     //Configuration des SMS en mode Text
00049     GSM.printf("AT+CMGF=1");
00050     FlushGSM();//vider le buffer de reception 
00051     
00052     //Envoi d'un SMS à l'autre système pour lui signaler que le programme tourne
00053     GSM.printf("AT+CMGS=%s",NumTel);
00054     //Récupération de la réponse et recherche du caractère ">"
00055     while(GSM.readable())
00056     {
00057         if(GSM.getc()=='>')
00058         {
00059             Flag = true;
00060         }
00061     }
00062     if(Flag==true)
00063     {
00064         //Ecriture de l'SMS
00065         GSM.printf("Essai !!!");
00066         //Validation de l'envoi avec le caractère Ctrl+Z
00067         GSM.printf("%c",CtrlZ);
00068         //Attente de la réponse suite à l'envoi
00069         while(!GSM.readable()){;}
00070         i=0;
00071         while(GSM.readable())//Récupération de la réponse dans r[]
00072         {
00073             r[i]=GSM.getc();
00074             i++;
00075         }
00076         
00077     }
00078     else
00079     {
00080         pc.printf("Terminal error !!!");
00081         return 0;
00082     }
00083     
00084     while(1) {
00085         
00086     }
00087 }