<?php
ser_open('COM5', 9600, 8, 'None', '1', 'None');
if (ser_isopen()) {
var_dump(ser_write("AT"));
sleep(5);
$str = ser_read();
var_dump($str);
} else {
echo 'Serialport Open Failed' . PHP_EOL;
}
ser_close();
?>
このスクリプトを実行すると、$strに「T」が反ってきます。
TeraTermでシリアルで「AT」を送ると「OK」が反ってきます。
PHPでも「OK」が反って来てほしいのですが、何か勘違いしてるのでしょうか?
(PHPでシリアル通信するのが適切ではないのはわかってはいるのですが・・・)
コメントありがとうございます。
いわれてみればそうですね。
なまじ「T」とか返ってくるので、見落としてました。
CR+LFをつけたらうまくいきました。
ありがとうございます。
お礼をしたいので、良ければ、回答に転記していただけないでしょうか。
ATコマンド送っているっていう事はモデムとの通信だと思いますが
通常モデムは"CR/LF"のような改行コード(デリミタ)を受信するまで"OK"を返しません。
ですので、
var_dump(ser_write("AT\n")); <= "\n"の部分はモデムの設定とあっている必要があります。
のように改行コード込みで記述してみて下さい。
ATコマンド送っているっていう事はモデムとの通信だと思いますが
通常モデムは"CR/LF"のような改行コード(デリミタ)を受信するまで"OK"を返しません。
ですので、
var_dump(ser_write("AT\n")); <= "\n"の部分はモデムの設定とあっている必要があります。
のように改行コード込みで記述してみて下さい。
コメント(3件)
通常モデムは"CR/LF"のような改行コード(デリミタ)を受信しないと"OK"を返しません。
ですので、
var_dump(ser_write("AT\n")); <= "\n"の部分はモデムの設定とあっている必要があります。
のように改行コード込みで記述して下さい。
お言葉に甘えて回答欄に転記させていただきました。