Amine KHETTAT
/
GSM
Program which allow to send/receive and treat SMS messages by connecting a GSM module to the mbed.
Embed:
(wiki syntax)
Show/hide line numbers
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 }
Generated on Fri Jul 15 2022 09:05:14 by 1.7.2