【问题标题】:Sending SMS AT commands to 3G modem using PHP使用 PHP 向 3G 调制解调器发送 SMS AT 命令
【发布时间】:2012-02-13 08:12:38
【问题描述】:

我在向连接在 COM5 上的 3G 调制解调器发送命令时遇到问题。 调制解调器正在接受连接并接收命令。 但是有一些问题(我认为它在我的语法/AT 命令中)。 在超级终端中,命令返回错误。 如果有人可以提供帮助,我将不胜感激。

-------下面的代码-------

<?
exec("mode COM5 BAUD=9600 PARITY=N data=8 stop=1 xon=off");
$fp = fopen ("\\.\COM5:", "r+");
//$fp = dio_open('COM5:', O_RDWR | O_NOCTTY | O_NONBLOCK);
if (!$fp) 
{
    echo "Uh-oh. Port not opened.";
} 
else 
{

    $string  = "AT+CMGF=1";

    $string  = $string."OK";

    $string  = $string."AT+CMGS='+27824139864'";

    $string  = $string."> Hello World?<Ctrl>+<Z>";

    $string  = $string."+CMGS: 44";

    $string  = $string."OK";

    fputs ($fp, $string );
    echo $string."\n";
    fclose ($fp);
}

?>

【问题讨论】:

  • 没有可见的错误。调制解调器根本不发送 SMS。
  • 在串口终端中运行相同的命令会发送短信吗?
  • @Appleman1234 我刚开始在超级终端中测试它,但它没有。我收到命令的错误消息。所以我现在的问题是获取正确的命令。当我找到它们时,我会进一步查看并重新发布。
  • 您收到的错误信息是什么?
  • 只是“错误”如果我输入“AT”,我会得到“OK”响应。如果我输入“AT+CMGF=1”,我会得到“ERROR”。

标签: php modem 3g at-command


【解决方案1】:

您需要在每个命令的末尾附加一个 \r 而不是“OK”。 “OK”是您希望电话返回的响应。 使用终端程序

1 second delay
+++
1 second delay
The modem should respond with "OK"
Type AT+CMGF=1
press enter key
Modem will repond with "OK"

等等... 你的手机可能不支持短信模式,只支持pdu模式

键入 at+CMGF=?

输入回车键,如果响应是 at+CMGF (0,1) 它支持 if (0) then pdu only。您必须在 pdu 模式下输入 SMS 消息。
有很多关于如何做到这一点的例子。

【讨论】:

  • 感谢大卫,这似乎是正确的,但如果我输入 AT+CMGF=?我仍然收到“错误”响应。似乎我输入的任何命令都会给我“错误”消息。在 AT 返回“OK”..可能是什么问题?会不会是调制解调器上的设置?
  • 你确定com5是手机吗?也许您正在与您的内置调制解调器通话(尽管它们通常最终在 com3 上,无论如何都是windoze)
  • 刚刚想到执行 at+cpin\r 这将检查是否输入了 pin。在您输入密码之前,可能会返回错误
【解决方案2】:

您需要在每个命令的末尾附加一个 \r 而不是“OK”。 “OK”是您希望电话返回的响应。使用终端程序

1 秒延迟 +++ 1 秒延迟 调制解调器应以“OK”响应 类型 AT+CMGF=1 按回车键 调制解调器将回复“OK”

等等...有可能你的手机不支持短信模式,只支持pdu模式

键入 at+CMGF=?

输入回车键,如果响应是 at+CMGF (0,1) 它支持 if (0) then pdu only。您必须在 pdu 模式下输入 SMS 消息。 有很多关于如何做到这一点的例子。

你能给我密码吗

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多