我想通过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
.....
}
答案 0 :(得分:0)
我刚刚写了以下comment,它同样适用于您的问题:
Is this practice causes any issue?
这是单一最差初学者 关于AT命令处理你可以做的错误。你应该 从不,永远,永远不会使用Thread.Sleep或类似于wait for response from a modem的任何内容。它和踢狗一样有用 坚持你的方式,让他们移动。是的,你可能很幸运 并且它实际上有时工作,但在某些时候你会 抱歉采取这种方法......
对于那个问题,目前尚不清楚问题是什么,但在你的情况下,我认为这是核心问题。你不能只是在调制解调器上抛出一堆AT命令,然后再尝试赶上ReadExisting。这永远不会可靠。
您必须以正确的方式读取并解析从调制解调器收到的所有内容(请参阅上面的链接)。