1

我知道我可能会投很多票,但请在我快到了的时候帮助我完成这个。我有以下代码。

<?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 相连。

我怎样才能做到这一点?

4

1 回答 1

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 ...
}
于 2013-04-03T09:04:36.977 回答