2010-02-12 9 views
2
  1. J'ai un modem GSM qui se déconnecte après un certain temps, peut-être à cause du signal faible. Je me demande juste s'il y a une commande AT qui peut détecter la déconnexion et rétablir une reconnexion.Quelles sont les fonctions/commandes AT pour reconnecter un modem GSM déconnecté?

  2. Y a-t-il un moyen de coder (de préférence python) je peux détecter la déconnexion et rétablir une reconnexion?

Gath

+0

utilisez-vous des modules Telit avec python 1.5.2+? – INS

Répondre

4

En fonction de ce type de connexion, à commutation de circuits (CS) ou commutation de paquets (PS), la surveillance sera un peu différent. Pour détecter une déconnexion, vous pouvez activer le code UR (résultat non sollicité) code AT+CPSB=1 pour surveiller l'activité de contexte PDP (aka connexions à commutation de paquets). Pour les appels à commutation de circuits, vous pouvez surveiller avec le code UR +CIEV: activé avec AT+CMER=3,0,0,2.

Pour rétablir la connexion, vous devez rétablir la connexion. Pour CS, vous devrez soit connaître le numéro de téléphone composé, ou vous pouvez utiliser le formulaire spécial de ATD, ATDL [1] qui composera le dernier numéro composé. Vous pouvez également utiliser ATDL pour PS si l'appel a été démarré avec ATD (c'est-à-dire "ATD * 99 * ....") ce qui est assez courant, mais je ne pense pas qu'il soit possible de démarrer avec AT + CGDATA par exemple . Cependant, aucun de ces éléments ne concerne les problèmes ATD, car ce n'est pas ce que vous voulez. Pour CS, vous pouvez configurer un appel à partir de votre script Python, mais alors quoi? Après avoir reçu CONNECT tout le trafic de données viendrait sur la connexion série que votre script python utilise. Et pour PS, la connexion ne se terminera même pas avec succès à moins que le téléphone reçoive du trafic PPP du PC dans le cadre de l'établissement de la connexion. Avez-vous l'intention que votre script python fournisse cela? Ce que vous voulez vraiment, c'est que votre ordinateur tente de se reconnecter, qu'il s'agisse d'un réseau d'accès au système d'exploitation standard ou d'une application spéciale qui le lance. Surveillez donc le modem avec un script python et ensuite prenez les mesures appropriées du côté PC pour rétablir la connexion. Note latérale à ATDL: notez que si vous voulez répéter le dernier appel vocal, vous devez toujours terminer par un point-virgule, c'est-à-dire ATDL;, sinon vous commencerez un appel de données.

+0

Je pense que le contexte PDP est seulement révélateur pour la connexion GPRS pas pour GSM. – luc

+0

Quelle est la différence entre Circuit Switched et Packet Switched? et comment la commande AT peut-elle entrer en jeu dans le rétablissement de la connexion? – gath

+0

Pour moi GSM implique également GPRS (et je suppose même "modem GSM" pour éventuellement signifier UMTS ou LTE, même si ce n'est pas à proprement parler n'est pas la même que la norme GSM d'origine), alors ne comprenez pas vraiment quelle différence vous pensent. Et le contexte PDP s'applique au GPRS, au trafic commuté emballé UMTS et au LTE. – hlovdal

0

Vous pouvez essayer de vérifier régulièrement la puissance du signal avec AT + CSQ. Si le signal passe sous un seuil donné, considérez que vous êtes déconnecté et forcez une nouvelle connexion.

Vous pouvez essayer la très belle bibliothèque Python pyserial http://pyserial.sourceforge.net/ pour envoyer les commandes AT au modem.

J'espère que cela aide

2

Voici comment je le fais avec Telit appareils:

J'utilise AT+CGREG=1 pour vous abonner à des messages non sollicités. Extrait de la documentation:

+CGREG - GPRS Network Registration Status 
AT+CGREG=[<n>] 
Set command controls the presentation of an unsolicited result code 
+CGREG: (see format below). 
Parameter: 
<n> - result code presentation mode 
0 - disable network registration unsolicited result code 
1 - enable network registration unsolicited result code; if there is a change in the terminal GPRS network registration status, it is issued the unsolicited result code: 
+CGREG: <stat> 

Et j'attends en ligne de série pour +CGREG messages du modem. Quand quelque chose arrive, je vérifie si stat est 1 (connecté au réseau domestique) ou 5 (connecté en roaming).

REMARQUE: Une réponse différente + CGREG vient lors de l'émission AT + CGREG? ce qui n'est pas difficile à isoler.

Questions connexes