我知道我可能会投下这么多票,但是请帮我解决这个问题。我有以下代码。
<?php
exec("mode COM1 BAUD=9600 PARITY=N data=8 stop=1 xon=off");
$fp = fopen ("\\.\com1", "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='+44XXXXX'";
$string = $string."> Hello World?<Ctrl>+<Z>";
$string = $string."+CMGS: 44";
$string = $string."OK";
fputs ($fp, $string );
echo $string."\n";
fclose ($fp);
}
?>
上面的代码输出AT+CMGF=1OKAT+CMGS='+44XXXX'> Hello World?++CMGS: 44OK
但实际上没有向该号码发送任何消息。
我的设备附有装有SIM卡的PC。
我该怎么做?
答案 0 :(得分:4)
据我所知,AT命令是对话。您必须发送AT+CMGF=1
,然后等待调制解调器发送 OK
,发送下一个命令等。
您现在正在发送所有内容,包括调制解调器的响应在一个字符串中。
维基百科上的更多信息(一如既往):http://en.wikipedia.org/wiki/Hayes_command_set
代码应该是(我的头顶,未经测试):
$string = "AT+CMGF=1";
fputs($fp, $string);
$r = fgets($fp);
if ($r == "OK") {
$string = "AT+CMGS='+44XXXXX'";
fputs($fp, $string);
$r = $fgets($fp);
... etc ...
}