2017-02-23 4 views
1

ich mehrere SMS über 3G-Modem auf etwa ~ 500 GSM-Nummern/users ...Senden mehrerer SMS über 3G-Modem (AT-Befehl)

Wonach 20-30 SMS senden möchten, macht es keinen Wert zurück (void) von der seriellen Schnittstelle und Modem sperrt sich ... Wenn ich das USB-Modem abziehe und erneut verbinde, löst sich das Problem vorübergehend.

Wie kann ich dieses Problem dauerhaft lösen?

 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 
        ..... 
      } 

Antwort

0

Ich schrieb die folgende comment und es gilt in gleicher Weise auch auf Ihre Frage:

Is this practice causes any issue? Dies ist die Single schlimmsten Anfänger Fehler, den Sie in Bezug auf AT-Befehl Handhabung tun können . Sie sollten nie, nie, nie, jemals Thread.Sleep oder etwas ähnlich wie wait for response from a modem verwenden. Es ist so nützlich wie treten Hunde, die stehen Ihnen in den Weg, um sie zu bewegen. Ja können Sie glücklich sein und haben sie manchmal tatsächlich funktionieren, aber irgendwann werden Sie leid nimmt diesen Ansatz sein ...

Für diese Frage nicht klar war, was das Problem ist, aber in Ihrem Ich denke, es ist das Kernproblem. Sie können nicht einfach eine Menge AT-Befehle an das Modem senden und später versuchen, ReadExisting nachzuholen. Das wird nie zuverlässig funktionieren.

Sie müssen lesen und analysieren alles richtig vom Modem empfangen (siehe meine Antwort oben verlinkt).