2017-02-23 2 views
1

Je voudrais envoyer plusieurs SMS par modem 3G à environ ~ 500 numéros GSM/utilisateurs ...Envoi de SMS multiples via un modem 3G (AT commande)

20-30 SMS après quoi, il ne retourne pas de valeur (void) du port série et le modem se bloque ... Lorsque je déconnecte le modem USB et que je me reconnecte, le problème est résolu temporairement.

Comment puis-je résoudre ce problème de manière permanente?

 for (int i = 0; i < 500; i++) 
      { 
       serialPort.Write("AT+CMGF=1\r"); 
       Thread.Sleep(1000); 
       serialPort.Write("AT+CMGS=\"" + "phonenumber" + "\"\r\n"); 
       Thread.Sleep(1000); 
       serialPort.Write("Hi:"+i.ToString() + "\x1A"); 
       Thread.Sleep(3000); 

       string t = serialPort.ReadExisting(); 

       if(t.Length>0) 
        .... 
       else 
        ..... 
      } 

Répondre

0

Je viens d'écrire ce qui suit comment, et il applique également à votre question ainsi:

Is this practice causes any issue? C'est l'erreur unique pire débutant vous pouvez faire en ce qui concerne au traitement de commande . Vous devriez jamais, jamais, jamais, jamais utiliser Thread.Sleep ou quoi que ce soit similaire à wait for response from a modem. C'est aussi utile que de donner un coup de pied aux chiens que se dressent sur votre chemin afin de les faire bouger. Oui, vous pourriez avoir de la chance et le faire fonctionner en fait parfois, mais à un moment donné, vous serez désolé d'avoir adopté cette approche ...

Pour cette question, il était pas clair quel est le problème, mais dans votre Je pense que c'est le problème principal. Vous ne pouvez pas simplement lancer une commande AT au niveau du modem, puis essayer de rattraper ReadExisting. Cela ne marchera jamais de manière fiable.

Vous devez lire et analyser tout ce qui a été reçu du modem correctement (voir ma réponse ci-dessus).