Bonjour,
Je viens de passer une après midi à galérer (je suis débutant, j'en suis à quelques applications déjà développées).
Je veux lire sur une carte GSM TC35i des SMS. A partir d'une arduino méga.
Pour cela, je lance la commande AT suivante :
AT+CMGL="ALL"\r
(commande qui affiche tous les SMS en mémoire)
Cela marche sans problème, le modem TC35i répond.
Pour afficher la réponse, dans ma boucle principale, j'utilise ce code (le TC35i étant sur le serial3 de ma MEGA) :
while(Serial3.available()!=0) // quand il y a des données en provenance du modem
{ // je les affiche sur le moniteur série
Serial.print(char(Serial3.read())); //
} //
Je rencontre alors le problème suivant :
Si je commande plusieurs fois de suite la lecture des SMS, je n'obtiens pas le même résultat à chaque fois dans le moniteur série.
Des caractères sautent, aléatoirement.
Ce n'est pas répétable...
J'ai l'impression d'avoir un problème de principe dans ma lecture de données sur le port série.
J'ai essayé de mettre des fonctions delay, mais rien n'y fait.
Au bout de 60 à 80 caractères affichés, ça saute des caractéres.
Pouvez vous m'aiguiller SVP ?
Exemple de ce que j'obtiens sur le moniteur série, qui devrait être la même chose à chaque fois, mais qui ne l'est pas !
(dès la troisième ligne, il y a un bug car elle se finie par 1, au lieu de se finir par un horodatage)
AT+CMGL="ALL"
+CMGL: 1,"REC READ","+336350xxxxx",,"16/03/13,1
+CMGL: 3,"REC READ","+336350xxxxx",,"16/03/13,16:18:03+04"
Essai 01
+CMGL: 4,"REC READ","+336350xxxxx",,"16/03/13,16:38:47+04"
Essai 02
+CMGL: 5,"REC READ","+336350xxxxx",,"16/03/13,17:33:14+04"
Essai 03
OK
AT+CMGL="ALL"
+CMGL: 1,"REC READ","+336350xxxxx",,"16/03/13,1CMGL: 3,"REC READ","+336350xxxxx",,"16/03/13,16:18:03+04"
Essai 01
+CMGL: 4,"REC READ","+336350xxxxx",,"16/03/13,16:38:47+04"
Essai 02
+CMGL: 5,"REC READ","+336350xxxxx",,"16/03/13,17:33:14+04"
Essai 03
OK
AT+CMGL="ALL"
+CMGL: 1,"REC READ","+336350xxxxx",,"16/03/13,1
Essai 01
+CMGL: 4,"REC READ","+336350xxxxx",,"16/03/13,16:38:47+04"
Essai 02
+CMGL: 5,"REC READ","+336350xxxxx",,"16/03/13,17:33:14+04"
Essai 03