Go Down

Topic: GSM - commandes AT - Le message ne part pas. (Read 418 times) previous topic - next topic

Niconnexion

May 17, 2017, 09:50 am Last Edit: May 17, 2017, 11:47 am by Niconnexion
Bien,

Je reviens vers vous étant donné que j'ai déjà posté sur ce forum pour le même problème mais je n'ai pas eu de réponse. Néanmoins j'ai avancé de mon coté.

J'arrive à envoyer un message une fois sur 50.
J'utilise une carte multi-opérateurs dans mon module GSM3 click (ne partez pas en courant, il est compatible Arduino).

J'essaye donc d'envoyer un message depuis cette carte vers mon téléphone portable.
J'utilise le code suivant :

Code: [Select]

vois setup() {//je set les pins, RAS}

void loop() {
   
      delay(20000);
     
      // Network registration
      commandStringGSM = "AT+CREG=1";
      Serial1.println(commandStringGSM);
      delay(50);
      readFromGsm();
      Serial.print(inputStringGSM);
      delay(500);
     
      // Set text mode
      commandStringGSM = "AT+CMGF=1";
      Serial1.println(commandStringGSM);
      delay(50);
      readFromGsm();
      Serial.print(inputStringGSM);
      delay(500);

      // Phone number and message
      commandStringGSM = "AT+CMGS=\"+336xxxxxxxx\"\r";
      Serial1.print(commandStringGSM);
      delay(50);
      readFromGsm();
      Serial.print(inputStringGSM);
      delay(500);
     
      commandStringGSM = "New Test4 from BLE2!";
      Serial1.print(commandStringGSM+(char)26);
      delay(50);
      readFromGsm();
      Serial.print(inputStringGSM);
      Serial.print('\n');
}

//ma fonction readFromGsm()
void readFromGsm(){

  incomingByteGSM = 0;
  inputStringGSM = "";
  delay(100);
    while(Serial1.available() > 0){
      incomingByteGSM = Serial1.read();
      inputStringGSM += String(incomingByteGSM);
      //delay(50);
    }
}




et voici mon retour moniteur :
Code: [Select]

AT+CREG=1

OK

AT+CREG=1

OK
AT+CMGF=1

OK

AT+CREG=1

OK
AT+CMGF=1

OK
AT+CMGS="+336xxxxxxxx"

>
AT+CREG=1

OK
AT+CMGF=1

OK
AT+CMGS="+336xxxxxxxx"

>
AT+CREG=1

OK
AT+CMGF=1

OK
AT+CMGS="+336xxxxxxxx"

> New Test4 from BLE2!
AT+CREG=1

OK
AT+CMGF=1

OK
AT+CMGS="+336xxxxxxxx"

> New Test4 from BLE2!
AT+CREG=1

OK

SMS Ready
AT+CMGF=1

OK
AT+CMGS="+336xxxxxxxx"

> New Test4 from BLE2!
AT+CREG=1

OK
AT+CMGF=1

OK

SMS Ready
AT+CMGS="+336xxxxxxxx"
ERROR


J'ai bien le petit '>' à la suite de ma commande CMGS, je ne comprend pas pourquoi je ne reçoit pas le message, et pourquoi j'ai une réponse normale qu'une fois sur 10 dans mon moniteur.
J'entends par là que parfois il y a uniquement le '>', parfois le message s'affiche, et parfois il y a "ERROR". Il y a peut-être d'autres commandes à envoyer ? Quelque chose d'autre que je pourrais vérifier ?

J'espère vraiment que quelqu'un pourra m'aider, car je suis dessus depuis un long moment et je ne m'en sors pas.

Merci !


infobarquee

bonjour,
vire le numéro de téléphone ;)
mets un delay de 1000 entre chaque commande au lieu de 50

testes
ca

Code: [Select]
Serial1.print("New Test4 from BLE2");
Serial1.print(0x1A);
      delay(1000);
      readFromGsm();
AUCUNE AIDE PAR MP

Niconnexion

Merci !
Quel con... J'ai pensé à le virer du moniteur série mais pas du code, champion !

En tout cas ça à l'air de marcher avec ta méthode... Enfin, ça marche surtout beaucoup mieux depuis que j'ai mis la carte multi-opérateurs dans mon téléphone pour changer d'opérateur justement.

Je suis passé de Bouygues Telecom à Orange et ça fonctionne très bien maintenant, avec ta méthode, et avec la mienne aussi x)

Bouygues Telecom est si nul que ça ?

En tout cas merci encore !
 


Go Up