Comment filtrer les réponses d'un commande AT+

Bonjour,

J'ai un problème un peu récuramt.

Je travaille avec un SIM808 avec une carte SIM. Aussi mon microcontroller envoi des commandes AT+ pour localiser le module, soit avec le GPS ou les positions des antennes GSM.

Par exemple, cette commande me retourne ceci:

---> AT+CIPGSMLOC=1,1
<--- +CIPGSMLOC: 0,6.143853,46.215862,2016/03/09,21:11:27

Le problème est lorsque j'appelle mon module avec mon smartphone.

Quand je l'appelle, il émet une réponse RING, et je pense, suivit de

RING
+CLIP: "+41700005206",145,"",0,"",0

Le eporblème qui se pose est le suivant.

Si j'appelle mon module il décroche et ca fonction. Cepenant, si je l'appelle "au mauvais moment", la réponse RING est mélangée avec une réponse d'une command AT.

Voici l'exemple concret:

Au moment, ou j'ai appelé le module, il effectuait cette command

---> AT+CIPGSMLOC=1,1
<--- RING

et comment vous pouvez l'appercevoir, au lieu de me retourner

+CIPGSMLOC: 0,6.143853,46.215862,2016/03/09,21:11:27

il me retourne

RING

et évidement, la commande AT+CIPGSMLOC, me retourne false.

Es-ce que je eux filtrer les réponses inattendue, qui ne sont pas générée par une commande en relation?

Aussi, dans mon code, j'ai une partie qui va détecter si un appel est encore, et donc va décroché ensuite.

Es-ce possible d'ignorer tous les RING et de les considérer que dans cette partie? Ou de les ignorer tout cours....

Pour terminer, j'ai déactiver le mode echo

ATE0

Merci pour vos lumières!!

Bonsoir,

Avec la réception de SMS, automatiquement différée si le SIM808 est occupé, tu peux régler le problème.
As-tu accès à la pin RI sur le shield ? A la réception d'un SMS, elle passe au niveau bas pendant 120 ms, facile à détecter avec une interruption sur l'Uno.

Donc dans le programme si interruption, l'uno vide d'abord le buffer (soft) série, envoie "AT + ta commande" au SIM808, lit la réponse et enfin envoie son contenu dans un SMS à ton smartphone