Bonjour
j'ai réalisé un programme en MIKROC de la reception et l'émission des SMS à l'aide d'un PIC16F877A pour la simulation sur ISIS ca marche mais je ne suis pas sur que les commandes AT et leur programmation surtout au niveau de la reception d'un message sont correctes ( je rappelle que j'ai besoin d'aide d'un personne qui a deja essayé ça en pratique car la simulation est bonne mais au pratique ????)
voici mon programme :
void reception_message(){
UART1_INIT(9600); // initialisation du protocol UART
// avec vitesse d'echange des données de 9600Delay_ms(100);
UART1_write_text("AT"); // Envoi de la commande ATUART1_write(13); // Code ASCII equivalent pour ENTRE
UART1_write(10); // Code ASCII equivalent pour (CTRL+H)delay_ms(1000);
UART1_write_text("AT+CMGF=1"); // choisir le mode texte
// en positionnant en 1UART1_write(13);
UART1_write(10);
delay_ms(1000);
UART1_write_text("AT+CPMS='ME' "); // la mémoire choisie est
//la mémoire de la télephoneUART1_write(13);
UART1_write(10);
delay_ms(1000);
UART1_write_text("AT+CNMI=2,1, 0,0,0");// extraire touts
// les message reçusUART1_write(13);
UART1_write(10);
delay_ms(1000);}
void lecture_message (){
UART1_write_text("AT+CMGR=1"); // la lecture du message
// de l'enplacement 1UART1_write(13);
UART1_write(10);
delay_ms(1000);
UART1_write_text("AT+CMGD=1"); // supprimer le message
// dans l'emplacement 1UART1_write(13);
UART1_write(10);
delay_ms(1000);}
void main() { char R;trisb.f0=1;intcon=0x90;trisb .f6=0;
reception_message();
UART1_init(9600);
Delay_ms(100);
loop:
lecture_message ();
if(X==1){ Emission_Message(); Emission_presence();X=0; }
// verifier si X est à 1 si oui envoyer
//un sms "presence" sinon continuer le programme
if(UART1_Data_Ready()){ // tester si on a une donnée au niveau
//de la reception par pic venant
//d'un telephone portableR=UART1_Read();
if(R=='a'){ PORTB.f6=1; Emission_Message();Emission_al ume();}
// si le message recu par le pic est "a" envoyer un sms "alume"else { if(R=='e' ){ PORTB.f6=0;Emission_Message(); Emission_Eteint();}
// si le message recu par le pic est "e" envoyer un sms "eteint"else {Emission_Message(); Emission_Erreur();};};};
// sinon envoi "erreur" goto loop;
}
void interrupt(){X=1;intcon.f1=0;}
// positioner X à 1 lorsqu'on a une interruption sur le pin RB0
-----