PHP는 하드웨어 제어를 구현합니다.

*文
풀어 주다: 2023-03-18 18:20:02
원래의
11516명이 탐색했습니다.

이 글에서는 주로 PHP에서 장치 연결, 통신 및 명령 전송 방법을 소개하고 소켓 기반 장치 연결 및 데이터 통신을 구현하는 PHP 관련 기술을 포함합니다. 특정 참조 값이 있습니다. 그것이 모두에게 도움이 되기를 바랍니다.

자세한 내용은 다음과 같습니다.

에서 개발한 BS 아키텍처 소프트웨어(PHP)가 장치와 통신해야 합니다. 여기에 기록하고 수정을 환영합니다.

1 TCP/IP를 사용하여 장치를 연결합니다.

Parameter$ service_port 연결 포트
Parameter $address IP 주소 보내기
Parameter $in Send 명령

function Send_socket_connect($service_port, $address, $in) {
//创建 TCP/IP socket$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);
      print('网络异常,请检查网络连接!!');
      exit();
    }
    // 刷新频率(250毫秒)
    usleep(250000);
  }
  //设置阻塞模式
  @socket_set_block($socket);
  //发送命令到设备
  socket_write($socket, $in, strlen($in));
  //关闭连接
  socket_close($socket);
}
로그인 후 복사

Send_socker_xdcoder $buffer는 반환 값입니다

function Send_socket_xdcoder($service_port, $address, $in) {
  //创建 TCP/IP socket
  $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(&#39;网络异常,请检查网络连接!!&#39;);</script>";
      exit();
    }
    // 刷新频率(250毫秒)
    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 보내기 명령

function Send_socket_connect_udp($service_port, $address, $in) {
  //采用php socket技术使用UDP协议连接设备
  $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(&#39;网络异常,请检查网络连接!!&#39;);</script>";
  }
}
로그인 후 복사

Send_socket_xdcoder_udp $buffer는 반환 값입니다

function Send_socket_xdcoder_udp($service_port, $address, $in) {
  //采用php socket技术使用UDP协议连接设备
  $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(&#39;网络异常,请检查网络连接!!&#39;);</script>";
  }
}
로그인 후 복사

3. RS232 직렬 포트 기술을 사용하여 장치를 연결하여 통신을 달성합니다. send Commands

Parameter $com Serial port
Parameter $baudratr Baud rate
Parameter $in Send command

function rs232_connect($com, $baudrate, $in) {
  @set_time_limit(10);
  //使用 &#39;windows下设置窜口参数&#39;;
  exec("mode " . $com . " BAUD=" . $baudrate . " PARITY=n DATA=8 STOP=1 odsr=off");
  // "打开端口串口$com";
  $f = @fopen($com, &#39;w+&#39;);
  //判断串口是否正常打开
  if (!$f) {
    //echo "<script>alert(&#39;Error when open $com!!&#39;);</script>";
    die("Error when open $com");
  }
  //向串口发送数据;
  fwrite($f, $in);
  //关闭端口    
  fclose($f);
  //串口操作结束
}
로그인 후 복사

명령의 16진수 변환도 있습니다:

function hexToStr($hex) {
  $string = "";
  for ($i = 0; $i < strlen($hex) - 1; $i+=3) {
    $string.=chr(hexdec($hex[$i] . $hex[$i + 1]));
  }
  return $string;
}
로그인 후 복사

관련 권장 사항:

PHP 소켓 서버 프레임워크 Workerman

예제 설명 PHP 소켓 네트워크 작업 클래스 정의 및 사용법

PHP 소켓 프로그래밍에 대한 자세한 소개

위 내용은 PHP는 하드웨어 제어를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!