2012-02-13 69 views
4

我无法将命令发送到连接在COM5上的3G调制解调器。 调制解调器正在接受连接并接收命令。 但有一些错误(我认为这是在我的语法/ AT命令)。 在超级终端中,命令返回错误。 如果任何人都可以帮助,我会很乐意欣赏它。使用PHP发送SMS AT命令到3G调制解调器使用PHP

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

<? 
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); 
} 

?> 
+0

给我们一个错误,请 – 2012-02-13 08:20:21

+0

没有明显的错误。调制解调器根本不发送短信。 – Luben 2012-02-13 08:22:17

+0

在串行终端中运行相同的命令是否发送SMS? – Appleman1234 2012-02-13 08:46:51

回答

3

您需要添加一个\ r给每个命令的末尾,而不是一个 “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" 

等... 很可能你的手机不支持短信模式下+ CMGF =只PDU模式

类型?

键入回车键,如果响应在+ CMGF(0,1),则它支持if(0)和pdu only。您将不得不以pdu模式输入短信。
有很多关于如何做到这一点的例子。

+0

谢谢戴维,似乎是对的,但如果我输入AT + CMGF =?我仍然收到“错误”回应。看来,我输入的任何命令都会给我“错误”信息。在AT返回“确定”..可能是问题是什么?它可能是调制解调器上的设置? – Luben 2012-02-13 12:07:37

+0

你确定com5是电话吗?也许你正在和你内置的调制解调器通话(尽管它们通常以com3为结尾,反正是windoze) – 2012-02-13 21:36:09

+0

刚刚有一个想法做了一个+ cpin \ r这将检查是否输入pin。这可能是错误返回,直到你已经输入引脚 – 2012-02-17 11:12:58

0

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

1秒的延迟 +++ 1秒的延迟 调制解调器应该AT + CMGF = 1 “OK” 类型回应 按回车键 调制解调器会以 “OK”

repond

等......这可能是您的手机不支持短信文本模式只有pdu模式

在+ CMGF =?

键入回车键,如果响应在+ CMGF(0,1),则它支持if(0)和pdu only。您将不得不以pdu模式输入短信。 有很多关于如何做到这一点的例子。

ü可以给我的代码

相关问题