Skip to content
mchobby edited this page Nov 2, 2012 · 7 revisions

Description des différents méthodes publique de la classe GoGprs.

Code de base

La mise en oeuvre de la librairie est vraiment vraiment simple.

Il faut:

  1. Mettre en place une connexion série avec le module SIM900 (connexion série logicielle).
  2. Instancier la classe GoGprs (avec la connexion série comme paramètre).
  3. Appeler execute() aussi souvent que possible

Dans l'exemple SendSMS ci-dessous, nous établissons également une connexion série avec le moniteur Série d'Arduino IDE. Cela permet de recevoir des message de deboggage vraiment utiles pour comprendre ce qui se passe dans le programme.

#include <GoGprs.h>
#include <SoftwareSerial.h>

#define PIN_CODE "7663" // Code PIN de la carte SIM

// Connexion série avec le shield GSM/GPRS
SoftwareSerial mySerial(PIN_GPRS_RX, PIN_GPRS_TX);
// Classe de gestion du shield
GoGprs gsm = GoGprs(&mySerial);

void setup() {
    // Etablir une autre connexion série avec Arduino IDE pour afficher 
    // des messages utiles
    Serial.begin(19200);
      
    // Démarrer la communication avec the shield GSM/GPRS
    gsm.begin( PIN_CODE );
}
    
void loop() {
    // appeler execute() aussi souvent que possible
    gsm.execute();
      
    /* verifie si le module est prêt et enregistré sur le reseau mobile */
    if( gsm.isCallReady() ){
        Serial.println( "ENREGISTRER SUR LE RESEAU MOBILE!" );
        // Donner un peu de temps au GPRS Shield pour que le shield bénéficie d'une 
        // connexion mobile stable.
        // Les SMS envoyés trop vite SMS après l'enregistrement sur le réseau mobile n'arrivent 
        // généralement pas à destination.
        delay( 2000 );
        if( gsm.sendSms( "+32477665544", "GOF GPRS Shield is Great!" ) ) {
            Serial.println( "SMS envoyé" );
        }
        else {
            Serial.println( "SMS pas envoyé!" );
        }

        // Eviter que le scketch continue à envoyer le continuellement le SMS.
        Serial.println( "Programe arreté!" );
        while( true ) ;
    }
    Serial.println( "Non enregistré sur le réseau mobile" );
    delay(500);
}

Méthodes générales

execute

Méthode traitant les messages entrant produit par le SIM900.

Il permet de prendre en charge les messages spontanément envoyés par le SIM900 et traiter les requêtes qui impliques plusieurs échanges de messages avec le SIM900.

L'idéal est de placer un appel à execute() au début de la fonction loop().

isReady

boolean isReady();             

Permet de savoir si le module SIM900 est alimenté et s'il répond aux différentes commandes.

isCallReady

boolean isCallReady();         

Permet de savoir si le GPRS shield est enregistré sur un réseau mobile. Lorsqu'il est enregistré, il est possible d'envoyer et recevoir des SMS/appel vocaux.

Lorsque isCallReady passe de False à True, il est préférable d'attendre un tout petit peu avant l'envoi du premier SMS.

IMEI

String IMEI();                 

Retourne le numéro IMEI du SIM900.

Méthodes pour SMS

Quelques explications

Dans l'état actuel de la librairie, elle n'est pas capable de traiter des SMS concurrents et à haut débit.

Lorsqu'un SMS est reçu, il est stocké dans l'un des SmsStore de la carte SIM et un message spontané est envoyé par le module SIM900.

La librairie identifie le message spontané du SIM900 (par l'intermédiaire de la fonction execute), identifie le SmsStore utilisé puis extrait le message SMS depuis le SmsStore.

Après l'extraction du SMS, la librairie libère le SmsStore utilisé sur la carte SIM.

Importance de la méthode execute

SI la fonction execute() n'est pas appelée assez souvent... ou si le module reçoit trop de SMS en trop peu de temps ALORS la librairie ne capturera pas (ratera) le message spontané envoyé par le SIM900.

Par conséquent, il ne libèrera pas non plus le SmsStore utilisé.

Comme une carte SIM contient environ 28 à 30 SmsStore, une fois qu'ils sont tous plein, plus aucun SMS est reçu.

Pour savoir comment libérer un SMSStore, je vous renvoi vers l'aide mémoire de notre wiki MCHobby dédié au GPRS Shield

sendSms

boolean sendSms( String sPhoneNr, String sMsg ); 

Envoi d'un simple message SMS.

hasSms

boolean hasSms();  

Est-ce que le GPRS shield à recu un SMS ? Si la fonction retourne True, les informations sont stockées dans une mémoire tempon.

vous pouvez collecter ces informations via les méthodes smsText() et smsCallee().

Ne pas oublier d'appeler la fonction clearSms() après avoir utilisé smsText() et smsCallee()

smsText

String  smsText(); 

Retourne le texte du dernier SMS reçu (texte stocké dans la mémoire tampon).

smsCallee

String  smsCallee(); 

Retourne le numéro du mobile ayant envoyé le SMS.

clearSms

void    clearSms();  

Remet le flag hasSms à False et nettoie la mémoire tampon qui contient les données du dernier SMS reçu.

Méthodes pour appels vocaux

call

boolean call( String sPhoneNr ); 

Fait un appel vocal vers le numéro mentionné en paramètre

handUp (raccrocher)

boolean hangUp();

Termine un appel vocal.

acceptCall

boolean acceptCall();   

Accepter un appel entrant (que vous pouvez détecter à l'aide de isRinging)

isRinging

boolean isRinging();      

Permet de savoir s'il y a une demande d'appel entrant (si le téléphone sonne).

Uniquement valable pour les appels entrants.

isCalling

boolean isCalling();      

Un appel vocal est actuellement en cours de formation (le mobile distant "sonne") ou établie ("téléphone distant à décroché)

isReadyForCall

boolean isReadyForCall(); 

Ne sonne pas et pas en cours d'appel... donc disponible pour effectuer un appel.