人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPでserialエクステンションを使ってシリアル通信を試みてます。

<?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でシリアル通信するのが適切ではないのはわかってはいるのですが・・・)

●質問者: MrB
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

質問者から

コメントありがとうございます。
いわれてみればそうですね。
なまじ「T」とか返ってくるので、見落としてました。
CR+LFをつけたらうまくいきました。
ありがとうございます。
お礼をしたいので、良ければ、回答に転記していただけないでしょうか。


1 ● ニャンざぶろう
●100ポイント ベストアンサー

ATコマンド送っているっていう事はモデムとの通信だと思いますが
通常モデムは"CR/LF"のような改行コード(デリミタ)を受信するまで"OK"を返しません。

ですので、
var_dump(ser_write("AT\n")); <= "\n"の部分はモデムの設定とあっている必要があります。
のように改行コード込みで記述してみて下さい。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ