通过AT命令发送短信很奇怪

opc*_*0de 6 delphi sms serial-port

我正在使用ComPort组件通过调制解调器发送SMS消息问题是,有时我得到短信有时候有时我没有得到短信正文中的at命令.

这是我的代码:

procedure SendSmsCosmote(numar,text : string);
const
  buf : Byte = 26;
begin
  Form1.ComPort1.WriteStr('AT+CMGF=1'+#13#10);
  Form1.ComPort1.WriteStr('AT+CMGS="'+ numar + '"'+#13);
  Form1.ComPort1.WriteStr(text);
  Form1.ComPort1.Write(buf,1);
end;
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?为什么当我从调制解调器读取时,我得到了我在tx线上发送的内容?

Har*_*riv 1

尝试在命令之间添加轻微的延迟(或等待调制解调器回复,通常为“OK”)。

  • 由于延迟(到底需要多长时间?),您无法确定命令是否成功,因此我肯定会等待回复并检查其值。 (2认同)
  • 这仍然只是我个人的看法,但来自长期的经验;我永远不会依赖一些神奇的延迟,而是尽可能检查命令结果,并决定如果某些命令失败该怎么办。您是控制该模块的人,很容易发生短信永远不会发送的情况。仅连续发送命令可能会导致您的应用程序到达模块固件中意想不到的位置,这是很糟糕的。 (2认同)