ホームページ > バックエンド開発 > PHPの問題 > PHPでシリアル通信を使う方法

PHPでシリアル通信を使う方法

醉折花枝作酒筹
リリース: 2023-03-11 17:36:01
転載
4572 人が閲覧しました

PHP は一部のアプリケーションでシリアル ポートと直接通信することがあり、rs232 および rs485 インターフェイス上のデータと通信する必要があります。インターネットで解決策を探すと色々な問題が発生するので、phpとシリアルポート通信の方法をまとめてみました。

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(&#39;dio&#39; =>
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( &#39; COM2 &#39; );
$seria --> deviceOpen();
$serial -> sendMessage( &#39; Sending a message to the port! &#39; );
$serial -> deviceClose();
?>
ログイン後にコピー

推奨される学習: phpビデオチュートリアル

以上がPHPでシリアル通信を使う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート