Go Down

Topic: Problème de réception de sms avec GsmShield 3 et Arduino Uno (Read 88 times) previous topic - next topic

Bretuu

Bonjour,
Dans le cadre d'un projet pour mon DUT nous avons besoin moi et mon binôme de traiter des messages reçus via la carte GSM branchée à l'arduino.

Nous arrivons parfaitement à envoyer un sms de confirmation, cependant nous avons du mal à comprendre comment marchent les fonction sms.available() et sms.flush().
La première semble nous renvoyer une valeur qui nous paraît aléatoire.

La deuxième quant à elle semble ne pas effacer le message lu. J'ai cru voir sur quelques topics à ce sujet qu'il pouvait hypothétiquement avoir un problème pour effacer les messages stockés sur la carte sim.

Je vous avouerai que nous sommes nouveaux dans ce domaine donc si vous avez de petits conseils à nous donner, cela serait parfait.

La majorité de notre code est directement issue des exemples présents dans l'IDE d'Arduino.

Voici notre code :
Code: [Select]
#include <GSM.h>
#define PINNUMBER ""
GSM gsmAccess;
GSM_SMS sms;
char txtMsg[200] = "Test";


 char remoteNumber[20]="0000000000";
 char c; //chaine de caractère dans laquelle est stockée le sms
 char senderNumber [20];
 
void setup() {
 void sendSMS();
 Serial.begin(9600);
 Serial.println("OK\n");

     boolean notConnected = true;
       while(notConnected)
       {
         if(gsmAccess.begin(PINNUMBER)==GSM_READY)
          notConnected = false;
         
        else
         {
          Serial.println("Not connected");
           delay(1000);
        }
 }


 sendSMS();
}


void loop() {
 

 
 if (sms.available()){
   Serial.println("Message received from:");
   sms.remoteNumber(senderNumber, 20);
   Serial.println(senderNumber);
   while(c=sms.read())
   Serial.print(c);
   Serial.println("\nEND OF MESSAGE");
     
 }
 
sms.flush();
Serial.println("Message deleted");
delay(1000);

}




void sendSMS(){

 Serial.print("Message to mobile number: ");
 Serial.println(remoteNumber);

 // sms text
 Serial.println("SENDING");
 Serial.println();
 Serial.println("Message:");
 Serial.println(txtMsg);

 // send the message
 sms.beginSMS(remoteNumber);
 sms.print(txtMsg);
 sms.endSMS();
 Serial.println("\nCOMPLETE!\n");  
}



Globalement le code marche mais :
- Bloque quelque fois juste après avoir noté "OK"
- Bloque quelque fois à l'envoi du sms "Test" au numéro "0000000000"
- Si tout marche, 1 seul sms est lu et ensuite on a une infinité de "Message deleted".

Un grand merci d'avance !!

Bretuu


al1fch

Bonjour et bienvenue

pour nous ce serait parfait si le code était publié entre les balises appropriées , balises CODE ( icône  </> ) comme indiqué les messages épinglés en tête de forum. Le code sera ainsi plus exploitable pour les intervenants envisageant de répondre.
ça donne ça :
Code: [Select]

mon code.......



La librairie SMS est décrite içi, voir en particulier le fonctionnement des deux fonctions qui vous intriguent.

Bretuu

Bonjour al1fch,

J'ai déjà bien zoné sur les différentes pages de librairies de la carte GSM.
Les problèmes que j'ai cités ci-dessus sont les principaux.
Quote
- Bloque quelque fois juste après avoir noté "OK"
- Bloque quelque fois à l'envoi du sms "Test" au numéro "0000000000"
- Si tout marche, 1 seul sms est lu et ensuite on a une infinité de "Message deleted"
J'en ai déduit que je ne comprenais pas bien comment marchent les deux fonctions
Quote
sms.available() et sms.flush()

Go Up