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

これで、モデムの応答を含むすべてが 1 つの文字列で送信されます。

ウィキペディアの詳細情報 (いつものように): 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 に答える