PHP は一部のアプリケーションでシリアル ポートと直接通信することがあり、rs232 および rs485 インターフェイス上のデータと通信する必要があります。インターネットで解決策を探すと色々な問題が発生するので、phpとシリアルポート通信の方法をまとめてみました。
php がシリアル ポートと通信するには、基本的に 2 つの方法があります。
1. php を介して dio を展開します。
dio 拡張機能をダウンロードします: http://www.cyberspice.org.uk/downloads/dio-0.0.4rc3.tgz
php.ini で dio 拡張機能を開きます。
dio を ON にすると、dio_open dio_read などの関数により通信が可能になります。ただし、dio はデフォルトでは Linux でしか動作せず、pecl も php_dio.dll をコンパイルしているようですが、win で試してみたところ、実際には正常に使用できませんでした。PHP のバージョンが高すぎる (5.3.3) のかもしれません。
dio 拡張子を開くことができれば、当然のことながらインターネット上に多くの例があります。
<?php $c = stream_context_create(array('dio' => array(‘data_rate’ => 115200, ‘data_bits’ => 8, ‘stop_bits’ => 1, ‘parity’ => 0, ‘is_canonical’ => 1))); if (PATH_SEPARATOR != “;”) { $filename = “dio.serial:///dev/ttyS0″; } else { $filename = “dio.serial://COM1″; } ?>
2.PHP_SER 拡張子
これは 3 番目です。 php5.3.3で利用できるparty extensionを普通に使っており、テスト結果は比較的安定しており、シングルバイトストリーム通信と非同期通信が可能です。シングルバイトストリーム通信については、作者に具体的に相談したところ、データストリームをループで読み込めることが分かりました。
ser_write() のデータは文字型ですが、ser_read() のデータは 10 進数であることに注意してください。したがって、送信時に 16 進数に変換し、受信後に通常使用するために 10 進数から 16 進数に変換するのが最善です。
サードパーティの拡張機能として php_ser もあり、作者は有料です。無料版には機能制限はありませんが、一度に送受信できるバイト数は1024バイトを超えられません。
function x_get_cgqbh() { $str = ‘at+ver?’; $str = hexToStr($str); ser_open( “COM1″, 9600, 8, “None”, “1″, “None” ); if (ser_isopen()) { return “opened, post data ……”; }else{ return false; } ser_write(“$str”); sleep(1); $str = ser_read(); ser_close(); return $str; }
php_ser アドレス: 忘れました。後で入力してください
=========================
PHP 言語を記述して、ビデオ、オーディオ、コンピューターなどのシリアル ポート デバイスやパラレル ポート デバイスを制御したいですか? それが今、現実になります。オープンソース プロジェクト php-serial を使用して簡単に実装できます。
たとえば、deviceSet() メソッドを呼び出してシリアル ポート名を渡すだけで済みます。その後、次のような単純な読み取りおよび書き込みメソッドを使用できます。
#p_code img { border: 0px none ; } <? deviceSet( ' COM2 ' ); $seria --> deviceOpen(); $serial -> sendMessage( ' Sending a message to the port! ' ); $serial -> deviceClose(); ?>
推奨される学習: phpビデオチュートリアル
以上がPHPでシリアル通信を使う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。