通过3G调制解调器发送多条短信(AT命令)

时间:2017-02-23 18:36:55

标签: c# serial-port sms at-command modem

我想通过3G调制解调器向大约500个GSM号码/用户发送多条短信......

此后20-30短信,它不会从串口恢复任何值(无效),调制解调器锁定...当我断开USB调制解调器并再次连接时,问题暂时解决。

如何永久解决此问题?

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

1 个答案:

答案 0 :(得分:0)

我刚刚写了以下comment,它同样适用于您的问题:

  

Is this practice causes any issue?这是单一最差初学者   关于AT命令处理你可以做的错误。你应该   从不,永远,永远不会使用Thread.Sleep或类似于wait for response from a modem的任何内容。它和踢狗一样有用   坚持你的方式,让他们移动。是的,你可能很幸运   并且它实际上有时工作,但在某些时候你会   抱歉采取这种方法......

对于那个问题,目前尚不清楚问题是什么,但在你的情况下,我认为这是核心问题。你不能只是在调制解调器上抛出一堆AT命令,然后再尝试赶上ReadExisting。这永远不会可靠。

您必须以正确的方式读取并解析从调制解调器收到的所有内容(请参阅上面的链接)。