この記事では、PHP でのデバイスの接続、通信、コマンドの送信方法を主に紹介し、ソケットに基づいてデバイスの接続とデータ通信を実現するための PHP の関連スキルについて説明します。一定の基準値があります。お役に立てれば幸いです。
詳細は次のとおりです:
によって開発された BS アーキテクチャ ソフトウェア (PHP) はデバイスと通信する必要があります。ここに記録し、修正を歓迎します:
1. TCP/IP を使用してデバイスを接続するために、php ソケット テクノロジを使用します。
Parameter$ service_port接続ポート
Parameter $address 送信IPアドレス
Parameter $in 送信コマンド
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | function Send_socket_connect( $service_port , $address , $in ) {
$timeout = 2;
$time = time();
@socket_set_nonblock( $socket );
while (!@socket_connect( $socket , $address , $service_port )) {
$err = socket_last_error( $socket );
if ( $err === 10056) {
break ;
}
if ((time() - $time ) >= $timeout ) {
socket_close( $socket );
print ('网络异常,请检查网络连接!!');
exit ();
}
usleep(250000);
}
@socket_set_block( $socket );
socket_write( $socket , $in , strlen ( $in ));
socket_close( $socket );
}
|
ログイン後にコピー
Send_socker_xdcoder $bufferが戻り値
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | function Send_socket_xdcoder( $service_port , $address , $in ) {
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die ( "could not create socket!" );
$timeout = 2;
$time = time();
@socket_set_nonblock( $socket );
while (!@socket_connect( $socket , $address , $service_port )) {
$err = socket_last_error( $socket );
if ( $err === 10056) {
break ;
}
if ((time() - $time ) >= $timeout ) {
socket_close( $socket );
echo "<script>alert('网络异常,请检查网络连接!!');</script>" ;
exit ();
}
usleep(250000);
}
@socket_set_block( $socket );
socket_write( $socket , $in , strlen ( $in ));
$buffer = socket_read( $socket , 1024, PHP_NORMAL_READ);
socket_close( $socket );
return $buffer ;
}
|
ログイン後にコピー
2. PHPソケットテクノロジーを使用してUDPプロトコルを使用してデバイスを接続し、通信を実現しますコマンド送信
パラメータ $service_port 接続ポート
パラメータ $address 送信IPアドレス
パラメータ $in 送信コマンド
1 2 3 4 5 6 7 8 9 10 11 12 | function Send_socket_connect_udp( $service_port , $address , $in ) {
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
@socket_set_option( $socket , SOL_SOCKET, SO_RCVTIMEO, array ( "sec" => 2, "usec" => 0));
@socket_sendto( $socket , $in , strlen ( $in ), 0, $address , $service_port );
@socket_recvfrom( $socket , $buffer , 1024, MSG_WAITALL, $address , $service_port );
if ( empty ( $buffer )) {
echo "<script>alert('网络异常,请检查网络连接!!');</script>" ;
}
}
|
ログイン後にコピー
Send_socket_xdcoder_udp $bufferは戻り値
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function Send_socket_xdcoder_udp( $service_port , $address , $in ) {
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
@socket_set_option( $socket , SOL_SOCKET, SO_RCVTIMEO, array ( "sec" => 2, "usec" => 0));
@socket_sendto( $socket , $in , strlen ( $in ), 0, $address , $service_port );
@socket_recvfrom( $socket , $buffer , 1024, MSG_WAITALL, $address , $service_port );
socket_close( $socket );
if (! empty ( $buffer )) {
return $buffer ;
} else {
echo "<script>alert('网络异常,请检查网络连接!!');</script>" ;
}
}
|
ログイン後にコピー
3 RS232シリアルポートテクノロジーを使用してデバイスを接続し、通信を実現します。コマンド送信
パラメータ $com シリアルポート
パラメータ $baudratr ボーレート
パラメータ $in 送信コマンド
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | function rs232_connect( $com , $baudrate , $in ) {
@set_time_limit(10);
exec ( "mode " . $com . " BAUD=" . $baudrate . " PARITY=n DATA=8 STOP=1 odsr=off" );
$f = @ fopen ( $com , 'w+');
if (! $f ) {
die ( "Error when open $com" );
}
fwrite( $f , $in );
fclose( $f );
}
|
ログイン後にコピー
コマンドの 16 進数変換もあります:
1 2 3 4 5 6 7 | function hexToStr( $hex ) {
$string = "" ;
for ( $i = 0; $i < strlen ( $hex ) - 1; $i +=3) {
$string .= chr (hexdec( $hex [ $i ] . $hex [ $i + 1]));
}
return $string ;
}
|
ログイン後にコピー
関連する推奨事項:
PHP ソケット サーバー フレームワークworkman
例の説明 PHPソケットネットワーク操作クラスの定義と使い方
PHPソケットプログラミングの詳しい紹介
以上がPHPはハードウェア制御を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。